Browse Source

When not fetching v2 dir info, don't require it for cleaning descriptors

Bugfix on 0.2.2.26-beta, which introduced the idea of caches not
cacheing v2 info.  Fixes bug 4838.
Daniel Bryg 13 years ago
parent
commit
f7e87f41f7
2 changed files with 7 additions and 0 deletions
  1. 5 0
      changes/bug4838
  2. 2 0
      src/or/routerlist.c

+ 5 - 0
changes/bug4838

@@ -0,0 +1,5 @@
+  o Minor bufixes:
+    - Directory caches no longer refuse to clean out descriptors when
+      because of missing v2 networkstatus documents, unless they're
+      actually trying to retrieve v2 networkstatus documents.  Bugfix
+      on 0.2.2.26-beta; fixes bug 4838. Patch by Daniel Bryg.

+ 2 - 0
src/or/routerlist.c

@@ -3614,6 +3614,7 @@ routerlist_remove_old_routers(void)
   const networkstatus_t *consensus = networkstatus_get_latest_consensus();
   const networkstatus_t *consensus = networkstatus_get_latest_consensus();
   const smartlist_t *networkstatus_v2_list = networkstatus_get_v2_list();
   const smartlist_t *networkstatus_v2_list = networkstatus_get_v2_list();
   int have_enough_v2;
   int have_enough_v2;
+  const or_options_t *options = get_options();
 
 
   trusted_dirs_remove_old_certs();
   trusted_dirs_remove_old_certs();
 
 
@@ -3675,6 +3676,7 @@ routerlist_remove_old_routers(void)
    * routers.) */
    * routers.) */
   /* we set this to true iff we don't care about v2 info, or we have enough. */
   /* we set this to true iff we don't care about v2 info, or we have enough. */
   have_enough_v2 = !caches ||
   have_enough_v2 = !caches ||
+    !(authdir_mode_any_main(options) || options->FetchV2Networkstatus) ||
     (networkstatus_v2_list &&
     (networkstatus_v2_list &&
      smartlist_len(networkstatus_v2_list) > get_n_v2_authorities() / 2);
      smartlist_len(networkstatus_v2_list) > get_n_v2_authorities() / 2);