From 64ab2317a89b3965e7d7230bb99cfc99a61f895f Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 17 Dec 2002 01:16:31 +0000 Subject: Update. 2002-12-16 Ulrich Drepper * sysdeps/posix/getaddrinfo.c (gaih_inet): If __nss_lookup_function fails to return a function pointer don't use it. --- sysdeps/posix/getaddrinfo.c | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c index 4af40f92ad..dd6e4155a1 100644 --- a/sysdeps/posix/getaddrinfo.c +++ b/sysdeps/posix/getaddrinfo.c @@ -570,25 +570,28 @@ gaih_inet (const char *name, const struct gaih_service *service, { fct = __nss_lookup_function (nip, "gethostbyname2_r"); - gethosts2 (AF_INET6, struct in6_addr); - no_inet6_data = no_data; - inet6_status = status; - gethosts2 (AF_INET, struct in_addr); - - /* If we found one address for AF_INET or AF_INET6, - don't continue the search. */ - if (inet6_status == NSS_STATUS_SUCCESS || - status == NSS_STATUS_SUCCESS) - break; - - /* We can have different states for AF_INET - and AF_INET6. Try to find a usefull one for - both. */ - if (inet6_status == NSS_STATUS_TRYAGAIN) - status = NSS_STATUS_TRYAGAIN; - else if (status == NSS_STATUS_UNAVAIL && - inet6_status != NSS_STATUS_UNAVAIL) - status = inet6_status; + if (fct != NULL) + { + gethosts2 (AF_INET6, struct in6_addr); + no_inet6_data = no_data; + inet6_status = status; + gethosts2 (AF_INET, struct in_addr); + + /* If we found one address for AF_INET or AF_INET6, + don't continue the search. */ + if (inet6_status == NSS_STATUS_SUCCESS || + status == NSS_STATUS_SUCCESS) + break; + + /* We can have different states for AF_INET + and AF_INET6. Try to find a usefull one for + both. */ + if (inet6_status == NSS_STATUS_TRYAGAIN) + status = NSS_STATUS_TRYAGAIN; + else if (status == NSS_STATUS_UNAVAIL && + inet6_status != NSS_STATUS_UNAVAIL) + status = inet6_status; + } if (nss_next_action (nip, status) == NSS_ACTION_RETURN) break; -- cgit 1.4.1