(_nss_dns_gethostbyname2_r): If res_search fails don't rely on errno value.
[kopensolaris-gnu/glibc.git] / resolv / nss_dns / dns-host.c
index fc00fe7..c075961 100644 (file)
@@ -163,7 +163,7 @@ _nss_dns_gethostbyname2_r (const char *name, int af, struct hostent *result,
   if (n < 0)
     {
       *h_errnop = h_errno;
-      *errnop = errno;
+      *errnop = *h_errnop == TRY_AGAIN ? EAGAIN : ENOENT;
       return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
     }
 
@@ -191,14 +191,6 @@ _nss_dns_gethostbyname_r (const char *name, struct hostent *result,
 
 
 enum nss_status
-_nss_dns_getipnodebyname (const char *name, int af, struct hostent *result,
-                         char *buffer, size_t buflen, int *errnop,
-                         int *h_errnop)
-{
-}
-
-
-enum nss_status
 _nss_dns_gethostbyaddr_r (const char *addr, size_t len, int af,
                          struct hostent *result, char *buffer, size_t buflen,
                          int *errnop, int *h_errnop)
@@ -350,6 +342,7 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
       name_ok = res_dnok;
       break;
     default:
+      *errnop = ENOENT;
       return NSS_STATUS_UNAVAIL;  /* XXX should be abort(); */
     }
 
@@ -364,6 +357,7 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
   if (qdcount != 1)
     {
       *h_errnop = NO_RECOVERY;
+      *errnop = ENOENT;
       return NSS_STATUS_UNAVAIL;
     }
 
@@ -398,6 +392,7 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
       if (n >= MAXHOSTNAMELEN)
        {
          *h_errnop = NO_RECOVERY;
+         *errnop = ENOENT;
          return NSS_STATUS_TRYAGAIN;
        }
       result->h_name = bp;
@@ -668,5 +663,6 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
     }
  no_recovery:
   *h_errnop = NO_RECOVERY;
+  *errnop = ENOENT;
   return NSS_STATUS_TRYAGAIN;
 }