[Libevent-users] [Patch] Fix a bug related to DNS timeout counting

2006-12-11 Thread Nick Mathewson
Hi, all!  This patch fixes a bug in nameserver timeouts in evdns.c.
Previously, we would count the number of successive requests that had
timed out in a row for each nameserver, but we would never actually
reset the timeout count to zero.  This, obviously, would create
problems: see the Tor bugtracker entry at
   http://bugs.noreply.org/flyspray/index.php?id=326do=details

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.
Probably, it should be easier to adjust.  There may also be other
issues that cause spurious nameserver timeouts: see the final comment
in the bugtracker link above.

yrs,
-- 
Nick Mathewson
=== evdns.c
==
--- evdns.c (revision 11485)
+++ evdns.c (local)
@@ -212,7 +212,7 @@
 
 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 @@
evtimer_del(ns-timeout_event);
ns-state = 1;
ns-failed_times = 0;
+   ns-timedout = 0;
global_good_nameservers++;
 }
 
@@ -891,6 +892,7 @@
nameserver_failed(ns, strerror(err));
return;
}
+   ns-timedout = 0;
reply_parse(packet, r);
}
 }
@@ -1051,6 +1053,7 @@
 
req-ns-timedout++;
if (req-ns-timedout  global_max_nameserver_timeout) {
+   req-ns-timedout = 0;
nameserver_failed(req-ns, request timed out.);
}
 


pgpPXZxJJbo7L.pgp
Description: PGP signature
___
Libevent-users mailing list
Libevent-users@monkey.org
http://monkey.org/mailman/listinfo/libevent-users


Re: [Libevent-users] [Patch] Fix a bug related to DNS timeout counting

2006-12-11 Thread Niels Provos

Thank you.  I have applied the patch to trunk.

Niels.

On 12/11/06, Nick Mathewson [EMAIL PROTECTED] wrote:

Hi, all!  This patch fixes a bug in nameserver timeouts in evdns.c.
Previously, we would count the number of successive requests that had
timed out in a row for each nameserver, but we would never actually
reset the timeout count to zero.  This, obviously, would create
problems: see the Tor bugtracker entry at
   http://bugs.noreply.org/flyspray/index.php?id=326do=details

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.
Probably, it should be easier to adjust.  There may also be other
issues that cause spurious nameserver timeouts: see the final comment
in the bugtracker link above.

yrs,
--
Nick Mathewson


___
Libevent-users mailing list
Libevent-users@monkey.org
http://monkey.org/mailman/listinfo/libevent-users





___
Libevent-users mailing list
Libevent-users@monkey.org
http://monkey.org/mailman/listinfo/libevent-users