Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8043df68 authored by Paul Jensen's avatar Paul Jensen Committed by Android (Google) Code Review
Browse files

Merge "Flush DNS cache when routes change." into lmp-dev

parents 6ac5db57 5fb2c6ff
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -4236,8 +4236,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
//        for (LinkProperties lp : newLp.getStackedLinks()) {
//            updateMtu(lp, null);
//        }
        updateRoutes(newLp, oldLp, netId);
        updateDnses(newLp, oldLp, netId);
        final boolean flushDns = updateRoutes(newLp, oldLp, netId);
        updateDnses(newLp, oldLp, netId, flushDns);
        updateClat(newLp, oldLp, networkAgent);
    }

@@ -4285,7 +4285,11 @@ public class ConnectivityService extends IConnectivityManager.Stub {
        }
    }

    private void updateRoutes(LinkProperties newLp, LinkProperties oldLp, int netId) {
    /**
     * Have netd update routes from oldLp to newLp.
     * @return true if routes changed between oldLp and newLp
     */
    private boolean updateRoutes(LinkProperties newLp, LinkProperties oldLp, int netId) {
        CompareResult<RouteInfo> routeDiff = new CompareResult<RouteInfo>();
        if (oldLp != null) {
            routeDiff = oldLp.compareAllRoutes(newLp);
@@ -4320,8 +4324,9 @@ public class ConnectivityService extends IConnectivityManager.Stub {
                loge("Exception in removeRoute: " + e);
            }
        }
        return !routeDiff.added.isEmpty() || !routeDiff.removed.isEmpty();
    }
    private void updateDnses(LinkProperties newLp, LinkProperties oldLp, int netId) {
    private void updateDnses(LinkProperties newLp, LinkProperties oldLp, int netId, boolean flush) {
        if (oldLp == null || (newLp.isIdenticalDnses(oldLp) == false)) {
            Collection<InetAddress> dnses = newLp.getDnsServers();
            if (dnses.size() == 0 && mDefaultDns != null) {
@@ -4342,6 +4347,13 @@ public class ConnectivityService extends IConnectivityManager.Stub {
                setDefaultDnsSystemProperties(dnses);
            }
            flushVmDnsCache();
        } else if (flush) {
            try {
                mNetd.flushNetworkDnsCache(netId);
            } catch (Exception e) {
                loge("Exception in flushNetworkDnsCache: " + e);
            }
            flushVmDnsCache();
        }
    }