Fail queries fast if no DNS servers are configured.
When no DNS servers are configured (and thus there is no chance that the DNS query will suceed), res_nsend returns early, but it does not tell the cache that the query has failed. Therefore, if the caller retries the query, it will block for PENDING_REQUEST_TIMEOUT (= 20 seconds) waiting for the "existing query" (which isn't actually doing anything) to complete. Bug: 18240188 Bug: 18327075 Change-Id: I0df13ff4a17ee65e640be96695a3af31b020963a
This commit is contained in:
parent
432f645887
commit
e5477f83b0
@ -402,6 +402,10 @@ res_nsend(res_state statp,
|
||||
}
|
||||
|
||||
if (statp->nscount == 0) {
|
||||
// We have no nameservers configured, so there's no point trying.
|
||||
// Tell the cache the query failed, or any retries and anyone else asking the same
|
||||
// question will block for PENDING_REQUEST_TIMEOUT seconds instead of failing fast.
|
||||
_resolv_cache_query_failed(statp->netid, buf, buflen);
|
||||
errno = ESRCH;
|
||||
return (-1);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user