Merge "Fix default DNS not being set on network changes"

This commit is contained in:
Geremy Condra
2013-07-24 00:32:34 +00:00
committed by Android (Google) Code Review

View File

@@ -2619,7 +2619,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
// Caller must grab mDnsLock. // Caller must grab mDnsLock.
private void updateDnsLocked(String network, String iface, private void updateDnsLocked(String network, String iface,
Collection<InetAddress> dnses, String domains) { Collection<InetAddress> dnses, String domains, boolean defaultDns) {
int last = 0; int last = 0;
if (dnses.size() == 0 && mDefaultDns != null) { if (dnses.size() == 0 && mDefaultDns != null) {
dnses = new ArrayList(); dnses = new ArrayList();
@@ -2631,6 +2631,10 @@ public class ConnectivityService extends IConnectivityManager.Stub {
try { try {
mNetd.setDnsServersForInterface(iface, NetworkUtils.makeStrings(dnses), domains); mNetd.setDnsServersForInterface(iface, NetworkUtils.makeStrings(dnses), domains);
if (defaultDns) {
mNetd.setDefaultInterfaceForDns(iface);
}
for (InetAddress dns : dnses) { for (InetAddress dns : dnses) {
++last; ++last;
String key = "net.dns" + last; String key = "net.dns" + last;
@@ -2658,7 +2662,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
String network = nt.getNetworkInfo().getTypeName(); String network = nt.getNetworkInfo().getTypeName();
synchronized (mDnsLock) { synchronized (mDnsLock) {
if (!mDnsOverridden) { if (!mDnsOverridden) {
updateDnsLocked(network, p.getInterfaceName(), dnses, p.getDomains()); updateDnsLocked(network, p.getInterfaceName(), dnses, p.getDomains(), true);
} }
} }
} else { } else {
@@ -3543,8 +3547,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
// Apply DNS changes. // Apply DNS changes.
synchronized (mDnsLock) { synchronized (mDnsLock) {
updateDnsLocked("VPN", iface, addresses, domains); updateDnsLocked("VPN", iface, addresses, domains, false);
mDnsOverridden = true;
} }
// Temporarily disable the default proxy (not global). // Temporarily disable the default proxy (not global).