summaryrefslogtreecommitdiff
path: root/libc/inet/resolv.c
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2011-06-14 16:31:00 +0200
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2011-06-14 16:31:00 +0200
commit0100056707c0ca5c51bb0b8d88612a407be09ef1 (patch)
tree4e8c8d9d6920833a74ca058dc21d59b6587ec33c /libc/inet/resolv.c
parentbc3be18145e4d57e7268506f123c0f0f373a15e2 (diff)
resolv: try next server on SERVFAIL
in bug 3637 Andrey Kovalev aka pxe.ru writes: getaddrinfo does NOT add domain to query when receive SERVFAIL RFC1035 7.2 suggests that - If a resolver gets a server error or other bizarre response from a name server, it should remove it from SLIST, and may wish to schedule an immediate transmission to the next candidate server address. So let's try the next server upon SERVFAIL even if it's not strictly required. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/inet/resolv.c')
-rw-r--r--libc/inet/resolv.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c
index 021d5bf5d..e8b7f2bad 100644
--- a/libc/inet/resolv.c
+++ b/libc/inet/resolv.c
@@ -1461,7 +1461,7 @@ int attribute_hidden __dns_lookup(const char *name,
/* bug 660 says we treat negative response as an error
* and retry, which is, eh, an error. :)
* We were incurring long delays because of this. */
- if (h.rcode == NXDOMAIN) {
+ if (h.rcode == NXDOMAIN || h.rcode == SERVFAIL) {
/* if possible, try next search domain */
if (!ends_with_dot) {
DPRINTF("variant:%d sdomains:%d\n", variant, sdomains);