diff options
author | Hajimu UMEMOTO <ume@FreeBSD.org> | 2010-08-15 16:28:08 +0000 |
---|---|---|
committer | Hajimu UMEMOTO <ume@FreeBSD.org> | 2010-08-15 16:28:08 +0000 |
commit | 2db99256b1b615236715b3d04ec5275a35a0a7c1 (patch) | |
tree | 76ba6da0e7f6ea9f986387ce81184e2601a67b4f | |
parent | 4816a1d1e4124af84ab8ec585733cd4999af9fb2 (diff) | |
download | src-2db99256b1b615236715b3d04ec5275a35a0a7c1.tar.gz src-2db99256b1b615236715b3d04ec5275a35a0a7c1.zip |
Correct the return code from _dns_gethostby*() to correspond
with h_errno.
Obtained from: NetBSD
MFC after: 2 weeks
Notes
Notes:
svn path=/head/; revision=211340
-rw-r--r-- | lib/libc/net/gethostbydns.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/lib/libc/net/gethostbydns.c b/lib/libc/net/gethostbydns.c index dc1047928684..f301c8801734 100644 --- a/lib/libc/net/gethostbydns.c +++ b/lib/libc/net/gethostbydns.c @@ -522,18 +522,26 @@ _dns_gethostbyname(void *rval, void *cb_data, va_list ap) free(buf); dprintf("res_nsearch failed (%d)\n", n, statp); *h_errnop = statp->res_h_errno; - return (0); + return (NS_NOTFOUND); } else if (n > sizeof(buf->buf)) { free(buf); dprintf("static buffer is too small (%d)\n", n, statp); *h_errnop = statp->res_h_errno; - return (0); + return (NS_UNAVAIL); } error = gethostanswer(buf, n, name, type, &he, hed, statp); free(buf); if (error != 0) { *h_errnop = statp->res_h_errno; - return (NS_NOTFOUND); + switch (statp->res_h_errno) { + case HOST_NOT_FOUND: + return (NS_NOTFOUND); + case TRY_AGAIN: + return (NS_TRYAGAIN); + default: + return (NS_UNAVAIL); + } + /*NOTREACHED*/ } if (__copy_hostent(&he, hptr, buffer, buflen) != 0) { *errnop = errno; @@ -632,7 +640,15 @@ _dns_gethostbyaddr(void *rval, void *cb_data, va_list ap) if (gethostanswer(buf, n, qbuf, T_PTR, &he, hed, statp) != 0) { free(buf); *h_errnop = statp->res_h_errno; - return (NS_NOTFOUND); /* h_errno was set by gethostanswer() */ + switch (statp->res_h_errno) { + case HOST_NOT_FOUND: + return (NS_NOTFOUND); + case TRY_AGAIN: + return (NS_TRYAGAIN); + default: + return (NS_UNAVAIL); + } + /*NOTREACHED*/ } free(buf); #ifdef SUNSECURITY |