diff options
author | ume <ume@FreeBSD.org> | 2006-03-24 13:30:10 +0000 |
---|---|---|
committer | ume <ume@FreeBSD.org> | 2006-03-24 13:30:10 +0000 |
commit | bf9a7919939ac869417c9254801036107b56da01 (patch) | |
tree | 0e5e56b97bcc44428e04d1e9c0ade9d7de68d5d5 /lib/libc/net/getaddrinfo.c | |
parent | 946071cfb766c855cda8e6bcf642a48573c38649 (diff) | |
download | FreeBSD-src-bf9a7919939ac869417c9254801036107b56da01.zip FreeBSD-src-bf9a7919939ac869417c9254801036107b56da01.tar.gz |
When res_nquerydomain() returns SERVFAIL, we should try next domain.
Diffstat (limited to 'lib/libc/net/getaddrinfo.c')
-rw-r--r-- | lib/libc/net/getaddrinfo.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/libc/net/getaddrinfo.c b/lib/libc/net/getaddrinfo.c index aca875f..21147c2 100644 --- a/lib/libc/net/getaddrinfo.c +++ b/lib/libc/net/getaddrinfo.c @@ -2455,6 +2455,10 @@ res_searchN(name, target, res) case NO_DATA: case HOST_NOT_FOUND: break; + case TRY_AGAIN: + if (hp->rcode == SERVFAIL) + break; + /* FALLTHROUGH */ default: return (-1); } @@ -2514,9 +2518,9 @@ res_searchN(name, target, res) /* keep trying */ break; case TRY_AGAIN: + got_servfail++; if (hp->rcode == SERVFAIL) { /* try next search element, if any */ - got_servfail++; break; } /* FALLTHROUGH */ @@ -2537,6 +2541,10 @@ res_searchN(name, target, res) case NO_DATA: case HOST_NOT_FOUND: break; + case TRY_AGAIN: + if (hp->rcode == SERVFAIL) + break; + /* FALLTHROUGH */ default: goto giveup; } |