summaryrefslogtreecommitdiff
path: root/resolv/nss_dns/dns-host.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-06-13 16:16:18 +0000
committerJakub Jelinek <jakub@redhat.com>2008-06-13 16:16:18 +0000
commite6042ff1eea1f5259df14cf42961898e6c9e6cb1 (patch)
tree4faf97dc92334bce423db1cd280dd98537a72180 /resolv/nss_dns/dns-host.c
parent72d4ac23660326e76443cf18f0ed8c2e4792d268 (diff)
Updated to fedora-glibc-20080613T1601cvs/fedora-glibc-2_8_90-7
Diffstat (limited to 'resolv/nss_dns/dns-host.c')
-rw-r--r--resolv/nss_dns/dns-host.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c
index f99db1c64f..cae077445f 100644
--- a/resolv/nss_dns/dns-host.c
+++ b/resolv/nss_dns/dns-host.c
@@ -1097,11 +1097,7 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
if (__builtin_expect (buflen < sizeof (struct gaih_addrtuple),
0))
- {
- *errnop = ERANGE;
- *h_errnop = NETDB_INTERNAL;
- return NSS_STATUS_TRYAGAIN;
- }
+ goto too_small;
*pat = (struct gaih_addrtuple *) buffer;
buffer += sizeof (struct gaih_addrtuple);
@@ -1175,11 +1171,17 @@ gaih_getanswer (const querybuf *answer1, int anslen1, const querybuf *answer2,
&pat, &buffer, &buflen,
errnop, h_errnop, ttlp,
&first);
- if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND)
+ if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND
+ || status == NSS_STATUS_TRYAGAIN)
&& answer2 != NULL && anslen2 > 0)
- status = gaih_getanswer_slice(answer2, anslen2, qname,
- &pat, &buffer, &buflen,
- errnop, h_errnop, ttlp, &first);
+ {
+ enum nss_status status2 = gaih_getanswer_slice(answer2, anslen2, qname,
+ &pat, &buffer, &buflen,
+ errnop, h_errnop, ttlp,
+ &first);
+ if (status != NSS_STATUS_SUCCESS)
+ status = status2;
+ }
return status;
}