Add a default dns entry if none is provided

Fixes part of emulator which isn't telling us about dns servers.
Gets some stuff running, but browser is still broken.

bug:2961703
Change-Id: I53b946eba434aca1bb524c2acaf77922377948d1
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 98394d0..54ff69f 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -121,6 +121,8 @@
     private int mNetTransitionWakeLockSerialNumber;
     private int mNetTransitionWakeLockTimeout;
 
+    private InetAddress mDefaultDns;
+
     private static class NetworkAttributes {
         /**
          * Class for holding settings read from resources.
@@ -209,6 +211,19 @@
             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 @@
             Collection<InetAddress> 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.dns" + j++, dns.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());
+                    }
                 }
                 for (int k=j ; k<mNumDnsEntries; k++) {
                     if (DBG) Slog.d(TAG, "erasing net.dns" + k);