From Nick Mathewson:

This patch resets the successive timeout count to zero when:
  - A nameserver comes up
  - We receive a reply from a nameserver
  - We decide to not use the nameserver for a while because of its
    timeout count.

This patch also changes the timeout threshold from 3 to 5 seconds.


svn:r303
This commit is contained in:
Niels Provos 2006-12-12 04:02:07 +00:00
parent a91d2b2b8c
commit 0147ef3ac7

View File

@ -212,7 +212,7 @@ static int global_requests_waiting = 0;
static int global_max_requests_inflight = 64;
static struct timeval global_timeout = {3, 0}; // 3 seconds
static struct timeval global_timeout = {5, 0}; // 5 seconds
static int global_max_reissues = 1; // a reissue occurs when we get some errors from the server
static int global_max_retransmits = 3; // number of times we'll retransmit a request which timed out
// number of timeouts in a row before we consider this server to be down
@ -447,6 +447,7 @@ nameserver_up(struct nameserver *const ns) {
evtimer_del(&ns->timeout_event);
ns->state = 1;
ns->failed_times = 0;
ns->timedout = 0;
global_good_nameservers++;
}
@ -891,6 +892,7 @@ nameserver_read(struct nameserver *ns) {
nameserver_failed(ns, strerror(err));
return;
}
ns->timedout = 0;
reply_parse(packet, r);
}
}
@ -1051,6 +1053,7 @@ evdns_request_timeout_callback(int fd, short events, void *arg) {
req->ns->timedout++;
if (req->ns->timedout > global_max_nameserver_timeout) {
req->ns->timedout = 0;
nameserver_failed(req->ns, "request timed out.");
}