Merge "Fix spurious DNS lookups in the C library."
diff --git a/libc/docs/CHANGES.TXT b/libc/docs/CHANGES.TXT
index c053714..4f87547 100644
--- a/libc/docs/CHANGES.TXT
+++ b/libc/docs/CHANGES.TXT
@@ -76,6 +76,10 @@
 - <time.h>: Fix timezone management implementation to properly update
   'tm_gmtoff' field in 'struct tm' structure.
 
+- DNS: get rid of spurious random DNS queries when trying to resolve
+  an unknown domain name. Due to an initialization bug, a random DNS search
+  list was generated for each thread is net.dns.search is not defined.
+
 -------------------------------------------------------------------------------
 Differences between Android 2.1 and 2.0.1:
 
diff --git a/libc/netbsd/resolv/res_cache.c b/libc/netbsd/resolv/res_cache.c
index 2c912de..2621a7b 100644
--- a/libc/netbsd/resolv/res_cache.c
+++ b/libc/netbsd/resolv/res_cache.c
@@ -251,7 +251,7 @@
         return p;
 
     va_start(args, format);
-    n = snprintf( p, avail, format, args);
+    n = vsnprintf( p, avail, format, args);
     va_end(args);
 
     /* certain C libraries return -1 in case of truncation */
diff --git a/libc/netbsd/resolv/res_init.c b/libc/netbsd/resolv/res_init.c
index 751603d..81e570f 100644
--- a/libc/netbsd/resolv/res_init.c
+++ b/libc/netbsd/resolv/res_init.c
@@ -198,6 +198,8 @@
 		if (pp > statp->dnsrch)
 			return 1;
 	}
+	statp->defdname[0] = '\0';  /* no default domain name on Android */
+	statp->dnsrch[0] = NULL;
 	return 0;
 }
 #endif
@@ -381,7 +383,7 @@
 
 	/* Add the domain search list */
 	havesearch = load_domain_search_list(statp);
-#else /* IGNORE resolv.conf */
+#else /* !ANDROID_CHANGES - IGNORE resolv.conf in Android */
 #define	MATCH(line, name) \
 	(!strncmp(line, name, sizeof(name) - 1) && \
 	(line[sizeof(name) - 1] == ' ' || \
@@ -534,7 +536,7 @@
 	    statp->nsort = nsort;
 	    (void) fclose(fp);
 	}
-#endif /* ANDROID_CHANGES */
+#endif /* !ANDROID_CHANGES */
 /*
  * Last chance to get a nameserver.  This should not normally
  * be necessary
diff --git a/libc/private/arpa_nameser.h b/libc/private/arpa_nameser.h
index 2d2a739..438dc04 100644
--- a/libc/private/arpa_nameser.h
+++ b/libc/private/arpa_nameser.h
@@ -566,4 +566,12 @@
 #include "arpa_nameser_compat.h"
 #endif
 
+#if 0
+#  include <logd.h>
+#  define  XLOG(...)   \
+    __libc_android_log_print(ANDROID_LOG_DEBUG,"libc",__VA_ARGS__)
+#else
+#define  XLOG(...)   do {} while (0)
+#endif
+
 #endif /* !_ARPA_NAMESER_H_ */
diff --git a/libc/unistd/gethostname.c b/libc/unistd/gethostname.c
index 369d21e..5d3d7d9 100644
--- a/libc/unistd/gethostname.c
+++ b/libc/unistd/gethostname.c
@@ -41,11 +41,11 @@
         int  namelen = strlen(name.nodename);
 
         if ((int)buflen < namelen+1) {
-    errno = EINVAL;
+            errno = EINVAL;
             result = -1;
         } else {
             memcpy( buff, name.nodename, namelen+1 );
-  }
+        }
     }
     return result;
 }