summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid 'Digit' Turner <digit@google.com>2010-03-09 11:13:35 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-03-09 11:13:35 -0800
commit92e712f60dae8f099004c439291362efd02f6889 (patch)
tree470c169003761ecd1b8e03bc1ff84ff4514c0a69
parent55cd975f3467f8803a997061b4a60c91393d7528 (diff)
parentd378c68d74cb4fdac450650fe816c9d649c8edaf (diff)
downloadbionic-92e712f60dae8f099004c439291362efd02f6889.zip
bionic-92e712f60dae8f099004c439291362efd02f6889.tar.gz
bionic-92e712f60dae8f099004c439291362efd02f6889.tar.bz2
Merge "Fix spurious DNS lookups in the C library."
-rw-r--r--libc/docs/CHANGES.TXT4
-rw-r--r--libc/netbsd/resolv/res_cache.c2
-rw-r--r--libc/netbsd/resolv/res_init.c6
-rw-r--r--libc/private/arpa_nameser.h8
-rw-r--r--libc/unistd/gethostname.c4
5 files changed, 19 insertions, 5 deletions
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 @@ Differences between current and Android 2.1:
- <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 @@ _bprint( char* p, char* end, const char* format, ... )
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 @@ int load_domain_search_list(res_state statp) {
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 @@ __res_vinit(res_state statp, int preinit) {
/* 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 @@ __res_vinit(res_state statp, int preinit) {
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 @@ __END_DECLS
#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 gethostname(char* buff, size_t buflen)
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;
}