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

Commit 87bf04db authored by Paul Jensen's avatar Paul Jensen Committed by Android Git Automerger
Browse files

am 5bfc639e: Merge "Flush DNS cache when routes change." into lmp-dev

* commit '5bfc639e8a835b6c1cb8d1ae30e9191bde6dd78a':
  Flush DNS cache when routes change.
parents d605503a 8043df68
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();
        }
    }