From: Niels Provos Date: Tue, 12 Dec 2006 04:02:07 +0000 (+0000) Subject: From Nick Mathewson: X-Git-Tag: release-2.0.1-alpha~671 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0147ef3ac71cb393443af2250fe658940020f880;p=libevent 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 --- diff --git a/evdns.c b/evdns.c index b61d0f2f..9d33f489 100644 --- a/evdns.c +++ b/evdns.c @@ -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."); }