mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-08 03:44:22 -04:00
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:
parent
a91d2b2b8c
commit
0147ef3ac7
5
evdns.c
5
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.");
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user