From 5605e1177d4728b66b92cb5012810b5feda1ec4b Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 23 Feb 2004 19:54:06 +0000 Subject: Update. 2004-02-23 Jakub Jelinek * sysdeps/posix/getaddrinfo.c (gaih_inet): If _res has not been inited yet, try to init it before saving old _res.options. * posix/Makefile (xtests): Add bug-ga2. (generated): Add bug-ga2.mtrace and bug-ga2-mem. (xtests): Depend on bug-ga2-mem. ($(objpfx)bug-ga2-mem, bug-ga2-ENV): New. * posix/bug-ga2.c: New test. --- sysdeps/posix/getaddrinfo.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'sysdeps/posix') diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c index 7c192bf2eb..afdefdfb52 100644 --- a/sysdeps/posix/getaddrinfo.c +++ b/sysdeps/posix/getaddrinfo.c @@ -604,8 +604,6 @@ gaih_inet (const char *name, const struct gaih_service *service, struct gaih_addrtuple **pat = &at; int no_data = 0; int no_inet6_data = 0; - int old_res_options = _res.options; - /* If we are looking for both IPv4 and IPv6 address we don't want the lookup functions to automatically promote IPv4 addresses to IPv6 addresses. Currently this is decided @@ -616,6 +614,7 @@ gaih_inet (const char *name, const struct gaih_service *service, enum nss_status inet6_status, status = NSS_STATUS_UNAVAIL; int no_more; nss_gethostbyname2_r fct; + int old_res_options; if (__nss_hosts_database != NULL) { @@ -626,6 +625,9 @@ gaih_inet (const char *name, const struct gaih_service *service, no_more = __nss_database_lookup ("hosts", NULL, "dns [!UNAVAIL=return] files", &nip); + if ((_res.options & RES_INIT) == 0 && __res_ninit(&_res) == -1) + no_more = 1; + old_res_options = _res.options; _res.options &= ~RES_USE_INET6; while (!no_more) -- cgit 1.4.1