Don\'t flush DNS cache on route changes.
am: 9488787
* commit '94887874e385797ac5290e867fe412b9d6fc2f9c':
Don't flush DNS cache on route changes.
Change-Id: I4217b342b63f6d0aa58ecad1b2e84de903563e07
This commit is contained in:
@@ -328,11 +328,6 @@ interface INetworkManagementService
|
|||||||
*/
|
*/
|
||||||
void setDnsServersForNetwork(int netId, in String[] servers, String domains);
|
void setDnsServersForNetwork(int netId, in String[] servers, String domains);
|
||||||
|
|
||||||
/**
|
|
||||||
* Flush the DNS cache associated with the specified network.
|
|
||||||
*/
|
|
||||||
void flushNetworkDnsCache(int netId);
|
|
||||||
|
|
||||||
void setFirewallEnabled(boolean enabled);
|
void setFirewallEnabled(boolean enabled);
|
||||||
boolean isFirewallEnabled();
|
boolean isFirewallEnabled();
|
||||||
void setFirewallInterfaceRule(String iface, boolean allow);
|
void setFirewallInterfaceRule(String iface, boolean allow);
|
||||||
|
|||||||
@@ -4134,8 +4134,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
// }
|
// }
|
||||||
updateTcpBufferSizes(networkAgent);
|
updateTcpBufferSizes(networkAgent);
|
||||||
|
|
||||||
final boolean flushDns = updateRoutes(newLp, oldLp, netId);
|
updateRoutes(newLp, oldLp, netId);
|
||||||
updateDnses(newLp, oldLp, netId, flushDns);
|
updateDnses(newLp, oldLp, netId);
|
||||||
|
|
||||||
updateClat(newLp, oldLp, networkAgent);
|
updateClat(newLp, oldLp, networkAgent);
|
||||||
if (isDefaultNetwork(networkAgent)) {
|
if (isDefaultNetwork(networkAgent)) {
|
||||||
@@ -4238,30 +4238,24 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
return !routeDiff.added.isEmpty() || !routeDiff.removed.isEmpty();
|
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)) {
|
||||||
if (oldLp == null || (newLp.isIdenticalDnses(oldLp) == false)) {
|
return; // no updating necessary
|
||||||
Collection<InetAddress> dnses = newLp.getDnsServers();
|
|
||||||
if (DBG) log("Setting Dns servers for network " + netId + " to " + dnses);
|
|
||||||
try {
|
|
||||||
mNetd.setDnsServersForNetwork(netId, NetworkUtils.makeStrings(dnses),
|
|
||||||
newLp.getDomains());
|
|
||||||
} catch (Exception e) {
|
|
||||||
loge("Exception in setDnsServersForNetwork: " + e);
|
|
||||||
}
|
|
||||||
final NetworkAgentInfo defaultNai = getDefaultNetwork();
|
|
||||||
if (defaultNai != null && defaultNai.network.netId == netId) {
|
|
||||||
setDefaultDnsSystemProperties(dnses);
|
|
||||||
}
|
|
||||||
flushVmDnsCache();
|
|
||||||
} else if (flush) {
|
|
||||||
try {
|
|
||||||
mNetd.flushNetworkDnsCache(netId);
|
|
||||||
} catch (Exception e) {
|
|
||||||
loge("Exception in flushNetworkDnsCache: " + e);
|
|
||||||
}
|
|
||||||
flushVmDnsCache();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Collection<InetAddress> dnses = newLp.getDnsServers();
|
||||||
|
if (DBG) log("Setting Dns servers for network " + netId + " to " + dnses);
|
||||||
|
try {
|
||||||
|
mNetd.setDnsServersForNetwork(
|
||||||
|
netId, NetworkUtils.makeStrings(dnses), newLp.getDomains());
|
||||||
|
} catch (Exception e) {
|
||||||
|
loge("Exception in setDnsServersForNetwork: " + e);
|
||||||
|
}
|
||||||
|
final NetworkAgentInfo defaultNai = getDefaultNetwork();
|
||||||
|
if (defaultNai != null && defaultNai.network.netId == netId) {
|
||||||
|
setDefaultDnsSystemProperties(dnses);
|
||||||
|
}
|
||||||
|
flushVmDnsCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDefaultDnsSystemProperties(Collection<InetAddress> dnses) {
|
private void setDefaultDnsSystemProperties(Collection<InetAddress> dnses) {
|
||||||
|
|||||||
@@ -1936,16 +1936,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void flushNetworkDnsCache(int netId) {
|
|
||||||
mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
|
|
||||||
try {
|
|
||||||
mConnector.execute("resolver", "flushnet", netId);
|
|
||||||
} catch (NativeDaemonConnectorException e) {
|
|
||||||
throw e.rethrowAsParcelableException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setFirewallEnabled(boolean enabled) {
|
public void setFirewallEnabled(boolean enabled) {
|
||||||
enforceSystemUid();
|
enforceSystemUid();
|
||||||
|
|||||||
Reference in New Issue
Block a user