summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2008-01-30 22:52:46 +0000
committerNick Mathewson <nickm@torproject.org>2008-01-30 22:52:46 +0000
commitf013fb5e3177e20b65f1220a35e82f577a138a3b (patch)
tree7a0f9ec261ac26db473c685c0d6f32384647b0d6 /src
parent1793aeafae6179c48592b45ea48317a33e24b1b5 (diff)
downloadtor-f013fb5e3177e20b65f1220a35e82f577a138a3b.tar.gz
tor-f013fb5e3177e20b65f1220a35e82f577a138a3b.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/or/main.c17
1 files changed, 17 insertions, 0 deletions
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). */