From: Nick Mathewson Date: Wed, 30 Jan 2008 22:52:46 +0000 (+0000) Subject: r17854@catbus: nickm | 2008-01-30 17:52:43 -0500 X-Git-Tag: tor-0.2.0.19-alpha~71 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f013fb5e3177e20b65f1220a35e82f577a138a3b;p=thirdparty%2Ftor.git r17854@catbus: nickm | 2008-01-30 17:52:43 -0500 Periodically check whether we have an expired consensus networkstatus. If we do, and we think we have enough directory info, then call router_dir_info_changed(). Fixes bug 401. This bug was deferred from 0.1.2.x, but fixing it there is nontrivial. svn:r13342 --- diff --git a/ChangeLog b/ChangeLog index 310b44ff8d..ca2c8554dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,9 @@ Changes in version 0.2.0.19-alpha - 2008-0?-?? - When connecting to a bridge without specifying its key, insert the connection into the identity-to-connection map as soon as a key is learned. Fixes bug 574. Bugfix on 0.2.0.x. + - When our consensus networkstatus has been expired for a while, stop + being willing to build circuits using it. Fixes bug 401. Bugfix on + 0.1.2.x. Changes in version 0.2.0.18-alpha - 2008-01-25 diff --git a/src/or/main.c b/src/or/main.c index 17ee14651f..2daf8aefef 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -818,6 +818,7 @@ run_scheduled_events(time_t now) static time_t time_to_save_stability = 0; static time_t time_to_clean_caches = 0; static time_t time_to_recheck_bandwidth = 0; + static time_t time_to_check_for_expired_networkstatus = 0; or_options_t *options = get_options(); int i; int have_dir_info; @@ -932,6 +933,22 @@ run_scheduled_events(time_t now) time_to_check_v3_certificate = now + CHECK_V3_CERTIFICATE_INTERVAL; } + /* 1f. Check whether our networkstatus has expired. + */ + if (time_to_check_for_expired_networkstatus < now) { + networkstatus_vote_t *ns = networkstatus_get_latest_consensus(); + /*XXXX020 this value needs to be the same as REASONABLY_LIVE_TIME in + * networkstatus_get_reasonably_live_consensus(), but that value is way + * way too high. Arma: is the bridge issue there resolved yet? -NM */ +#define NS_EXPIRY_SLOP (24*60*60) + if (ns && ns->valid_until < now+NS_EXPIRY_SLOP && + router_have_minimum_dir_info()) { + router_dir_info_changed(); + } +#define CHECK_EXPIRED_NS_INTERVAL (2*60) + time_to_check_for_expired_networkstatus = now + CHECK_EXPIRED_NS_INTERVAL; + } + /** 2. Periodically, we consider getting a new directory, getting a * new running-routers list, and/or force-uploading our descriptor * (if we've passed our internal checks). */