From: Nick Mathewson Date: Mon, 13 Sep 2010 01:28:49 +0000 (-0400) Subject: Make authorities download consensuses if appropriate X-Git-Tag: tor-0.2.2.16-alpha~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc0efa808409ddce6dda1d7670da83bf7c0a5b05;p=thirdparty%2Ftor.git Make authorities download consensuses if appropriate An authority should never download a consensus if it has a live one, but when it doesn't, it should admit that it's not going to get one, and see if anybody else can give it one. Fixes 1300, fix on 0.2.0.9-alpha --- diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index c0a3a28e4b..e985679c4e 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -1168,14 +1168,11 @@ update_v2_networkstatus_cache_downloads(time_t now) static void update_consensus_networkstatus_downloads(time_t now) { - or_options_t *options = get_options(); int i; if (!networkstatus_get_live_consensus(now)) time_to_download_next_consensus = now; /* No live consensus? Get one now!*/ if (time_to_download_next_consensus > now) return; /* Wait until the current consensus is older. */ - if (authdir_mode_v3(options)) - return; /* Authorities never fetch a consensus */ /* XXXXNM Microdescs: may need to download more types. */ if (!download_status_is_ready(&consensus_dl_status[FLAV_NS], now, CONSENSUS_NETWORKSTATUS_MAX_DL_TRIES)) @@ -1246,7 +1243,7 @@ update_consensus_networkstatus_fetch_time(time_t now) * is no longer fresh... */ start = c->fresh_until + min_sec_before_caching; /* Some clients may need the consensus sooner than others. */ - if (options->FetchDirInfoExtraEarly) { + if (options->FetchDirInfoExtraEarly || authdir_mode_v3(options)) { dl_interval = 60; if (min_sec_before_caching + dl_interval > interval) dl_interval = interval/2;