summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Hockin <thockin@google.com>2016-03-09 21:48:32 +0100
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2016-03-10 21:50:25 +0100
commit2ac8348609b63d6f3a87cb27ce17deff889c6a73 (patch)
tree36fa9514b8baf5b2362c81a122eb624766b4b0c8
parent3c67c044f93b452aa483eb1246195ebb4443cb44 (diff)
DNS: don't count search-path miss as a retry
Currently a miss on a search-path entry is counted as a retry. This means that users with more than (num_nameservers * retries) entries in their search path list fail before trying all search paths. Concretely, a single nameserver with 4 search paths will never try the 4th search because the default retry is 3. The code doesn't currently retry a given nameserver in case of an error, so retries is sort of meaningless (though there are some comments indicating it might come). This change only treats total failure of a nameserver (try next server) as a retry. Signed-off-by: Tim Hockin <thockin@google.com>
-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 4b33896d3..e676f5371 100644
--- a/libc/inet/resolv.c
+++ b/libc/inet/resolv.c
@@ -1320,7 +1320,6 @@ int __dns_lookup(const char *name,
local_ns_num = last_ns_num;
retries_left = __nameservers * __resolv_attempts;
}
- retries_left--;
if (local_ns_num >= __nameservers)
local_ns_num = 0;
local_id++;
@@ -1572,6 +1571,7 @@ int __dns_lookup(const char *name,
try_next_server:
/* Try next nameserver */
+ retries_left--;
local_ns_num++;
variant = -1;
} while (retries_left > 0);