Browse Source

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
Nick Mathewson 15 years ago
parent
commit
cc0efa8084
1 changed files with 1 additions and 4 deletions
  1. 1 4
      src/or/networkstatus.c

+ 1 - 4
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;