From 1c8d287e58a3199213b5533136a7a04c8eb231bb Mon Sep 17 00:00:00 2001 From: Kenneth Soerensen Date: Fri, 20 Dec 2013 15:53:01 +0100 Subject: 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 Signed-off-by: Bernhard Reutner-Fischer --- libc/inet/resolv.c | 1 + 1 file changed, 1 insertion(+) (limited to 'libc/inet/resolv.c') 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; -- cgit v1.2.3