summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Soerensen <kenneth.sorensen@spectralink.com>2013-12-20 15:53:01 +0100
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2013-12-20 15:53:01 +0100
commit1c8d287e58a3199213b5533136a7a04c8eb231bb (patch)
treed56ef2f9c9d38719e1bdf92e37a64c10d3569d1c
parent294079b3fd6a30d444b2b093bc0f1909136a0f6c (diff)
inet: Fix threaded res_init
In a multi-threaded application where res_init() was called either directly or implicitly, getaddrinfo() and others failed to add the DNS search domain to hostnames. This problem made it not possible to look up a hostname without its domain appended. The problem is caused by res_sync_func() overwriting the configuration read by __open_nameservers() immediately after it is read. The suggested solutin is to disable res_sync_func() while reading name server configuration in res_init(). Signed-off-by: Kenneth Soerensen <kenneth.sorensen@spectralink.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-rw-r--r--libc/inet/resolv.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c
index f334d0586..154734dc5 100644
--- a/libc/inet/resolv.c
+++ b/libc/inet/resolv.c
@@ -3575,6 +3575,7 @@ res_init(void)
if (!_res.id)
_res.id = res_randomid();
+ __res_sync = NULL;
__res_vinit(&_res, 1);
__res_sync = res_sync_func;