From bf3b3a44f38b53b948e8ae148359edd690ee4c24 Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Tue, 13 Mar 2007 01:59:09 +0000 Subject: [PATCH] Stop allowing hibernating servers to be "stable" or "fast". This is what I meant to do in r9690 but didn't actually do. svn:r9808 --- ChangeLog | 3 +++ doc/spec/dir-spec.txt | 24 +++++++++++++----------- src/or/dirserv.c | 2 ++ 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 50f5a5a4f5..554f1a8bb9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -32,6 +32,9 @@ Changes in version 0.2.0.1-alpha - 2007-??-?? try to use \ consistently on windows and / consistently on unix: it makes the log messages nicer. + o Minor bugfixes: + - Stop allowing hibernating servers to be "stable" or "fast". + Changes in version 0.1.2.10-rc - 2007-03-07 o Major bugfixes (Windows): diff --git a/doc/spec/dir-spec.txt b/doc/spec/dir-spec.txt index 727349acb1..bd3d57a34d 100644 --- a/doc/spec/dir-spec.txt +++ b/doc/spec/dir-spec.txt @@ -425,6 +425,9 @@ $Id$ authorities MAY do things differently, so long as clients keep working well. Clients MUST NOT depend on the exact behaviors in this section.) + In the below definitions, a router is considered "active" if it is + running, valid, and not hibernating. + "Valid" -- a router is 'Valid' if it is running a version of Tor not known to be broken, and the directory authority has not blacklisted it as suspicious. @@ -441,20 +444,19 @@ $Id$ "Running" -- A router is 'Running' if the authority managed to connect to it successfully within the last 30 minutes. - "Stable" -- A router is 'Stable' if it is running, valid, not - hibernating, and either its uptime is at least the median uptime for - known running, valid, non-hibernating routers, or its uptime is at - least 30 days. Routers are never called stable if they are running - a version of Tor known to drop circuits stupidly. (0.1.1.10-alpha - through 0.1.1.16-rc are stupid this way.) + "Stable" -- A router is 'Stable' if it is active, and either its + uptime is at least the median uptime for known active routers, or + its uptime is at least 30 days. Routers are never called stable if + they are running a version of Tor known to drop circuits stupidly. + (0.1.1.10-alpha through 0.1.1.16-rc are stupid this way.) - "Fast" -- A router is 'Fast' if its bandwidth is in the top 7/8ths for - known running, valid routers. + "Fast" -- A router is 'Fast' if it is active, and its bandwidth is + in the top 7/8ths for known active routers. "Guard" -- A router is a possible 'Guard' if it is 'Stable' and its - bandwidth is above median for known running, valid routers. If the total - bandwidth of Running Valid non-BadExit Exit servers is less than one third - of the total bandwidth of all Running Valid servers, no Exit is listed as + bandwidth is above median for known active routers. If the total + bandwidth of active non-BadExit Exit servers is less than one third + of the total bandwidth of all active servers, no Exit is listed as a Guard. "Authority" -- A router is called an 'Authority' if the authority diff --git a/src/or/dirserv.c b/src/or/dirserv.c index cc85d090f6..3e7dad01c4 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -1629,9 +1629,11 @@ generate_v2_networkstatus(void) tor_version_as_new_as(ri->platform,"0.1.1.10-alpha") && !tor_version_as_new_as(ri->platform,"0.1.1.16-rc-cvs"); int f_stable = ri->is_stable = + router_is_active(ri, now) && !dirserv_thinks_router_is_unreliable(now, ri, 1, 0) && !unstable_version; int f_fast = ri->is_fast = + router_is_active(ri, now) && !dirserv_thinks_router_is_unreliable(now, ri, 0, 1); int f_running = ri->is_running; /* computed above */ int f_authority = router_digest_is_trusted_dir(