Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 18 Sep 2004 23:57:46 +0000 (23:57 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 18 Sep 2004 23:57:46 +0000 (23:57 +0000)
* sysdeps/posix/getaddrinfo.c (gaih_inet): Do not use
gethostbyname3_r if we are not looking for the canonical name.

ChangeLog
sysdeps/posix/getaddrinfo.c

index 919639a..d3e8f72 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2004-09-18  Ulrich Drepper  <drepper@redhat.com>
 
+       * sysdeps/posix/getaddrinfo.c (gaih_inet): Do not use
+       gethostbyname3_r if we are not looking for the canonical name.
+
        * resolv/res_mkquery.c (res_nmkquery): Randomize request ID every
        time.
 
index f9d0bf4..b3f9f4f 100644 (file)
@@ -775,8 +775,13 @@ gaih_inet (const char *name, const struct gaih_service *service,
 
          while (!no_more)
            {
-             nss_gethostbyname3_r fct
-               = __nss_lookup_function (nip, "gethostbyname3_r");
+             nss_gethostbyname3_r fct = NULL;
+             if (req->ai_flags & AI_CANONNAME)
+               /* No need to use this function if we do not look for
+                  the canonical name.  The function does not exist in
+                  all NSS modules and therefore the lookup would
+                  often fail.  */
+               fct = __nss_lookup_function (nip, "gethostbyname3_r");
              if (fct == NULL)
                /* We are cheating here.  The gethostbyname2_r function does
                   not have the same interface as gethostbyname3_r but the