aboutsummaryrefslogtreecommitdiff
path: root/src/or/networkstatus.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2010-09-12 21:28:49 -0400
committerNick Mathewson <nickm@torproject.org>2010-09-12 21:41:15 -0400
commitcc0efa808409ddce6dda1d7670da83bf7c0a5b05 (patch)
treeb179774b0f89c4be91fdf0bbf585a56b034f0c4f /src/or/networkstatus.c
parent2be5effe9a3b3832f92b52c21bfee6e491bc25fc (diff)
downloadtor-cc0efa808409ddce6dda1d7670da83bf7c0a5b05.tar.gz
tor-cc0efa808409ddce6dda1d7670da83bf7c0a5b05.zip
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
Diffstat (limited to 'src/or/networkstatus.c')
-rw-r--r--src/or/networkstatus.c5
1 files changed, 1 insertions, 4 deletions
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;