diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 98394d07df..54ff69f60d 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -121,6 +121,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { private int mNetTransitionWakeLockSerialNumber; private int mNetTransitionWakeLockTimeout; + private InetAddress mDefaultDns; + private static class NetworkAttributes { /** * Class for holding settings read from resources. @@ -209,6 +211,19 @@ public class ConnectivityService extends IConnectivityManager.Stub { SystemProperties.set("net.hostname", name); } + // read our default dns server ip + String dns = Settings.Secure.getString(context.getContentResolver(), + Settings.Secure.DEFAULT_DNS_SERVER); + if (dns == null || dns.length() == 0) { + dns = context.getResources().getString( + com.android.internal.R.string.config_default_dns_server); + } + try { + mDefaultDns = InetAddress.getByName(dns); + } catch (UnknownHostException e) { + Slog.e(TAG, "Error setting defaultDns using " + dns); + } + mContext = context; PowerManager powerManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); @@ -1468,12 +1483,20 @@ public class ConnectivityService extends IConnectivityManager.Stub { Collection dnses = p.getDnses(); if (mNetAttributes[netType].isDefault()) { int j = 1; - for (InetAddress dns : dnses) { + if (dnses.size() == 0 && mDefaultDns != null) { if (DBG) { - Slog.d(TAG, "adding dns " + dns + " for " + - nt.getNetworkInfo().getTypeName()); + Slog.d(TAG, "no dns provided - using " + mDefaultDns.getHostAddress()); + } + SystemProperties.set("net.dns1", mDefaultDns.getHostAddress()); + j++; + } else { + for (InetAddress dns : dnses) { + if (DBG) { + Slog.d(TAG, "adding dns " + dns + " for " + + nt.getNetworkInfo().getTypeName()); + } + SystemProperties.set("net.dns" + j++, dns.getHostAddress()); } - SystemProperties.set("net.dns" + j++, dns.getHostAddress()); } for (int k=j ; k