diff options
Diffstat (limited to 'resolv')
-rw-r--r-- | resolv/nss_dns/dns-host.c | 20 | ||||
-rw-r--r-- | resolv/res_init.c | 2 |
2 files changed, 17 insertions, 5 deletions
diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c index 6cbfcb63ce..b8e513a929 100644 --- a/resolv/nss_dns/dns-host.c +++ b/resolv/nss_dns/dns-host.c @@ -198,8 +198,14 @@ _nss_dns_gethostbyname3_r (const char *name, int af, struct hostent *result, 1024, &host_buffer.ptr, NULL, NULL, NULL); if (n < 0) { - status = (errno == ECONNREFUSED - ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); + if (errno == ESRCH) + { + status = NSS_STATUS_TRYAGAIN; + h_errno = TRY_AGAIN; + } + else + status = (errno == ECONNREFUSED + ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); *h_errnop = h_errno; if (h_errno == TRY_AGAIN) *errnop = EAGAIN; @@ -304,8 +310,14 @@ _nss_dns_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat, &ans2p, &nans2p, &resplen2); if (n < 0) { - status = (errno == ECONNREFUSED - ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); + if (errno == ESRCH) + { + status = NSS_STATUS_TRYAGAIN; + h_errno = TRY_AGAIN; + } + else + status = (errno == ECONNREFUSED + ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); *herrnop = h_errno; if (h_errno == TRY_AGAIN) *errnop = EAGAIN; diff --git a/resolv/res_init.c b/resolv/res_init.c index d93dc82718..0cdd55e71b 100644 --- a/resolv/res_init.c +++ b/resolv/res_init.c @@ -183,7 +183,7 @@ __res_vinit(res_state statp, int preinit) { #endif statp->nsaddr.sin_family = AF_INET; statp->nsaddr.sin_port = htons(NAMESERVER_PORT); - statp->nscount = 1; + statp->nscount = 0; statp->ndots = 1; statp->pfcode = 0; statp->_vcsock = -1; |