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.
This commit is contained in:
Daniel Bryg 2012-02-23 13:57:27 -05:00 committed by Nick Mathewson
parent 81fe3e438b
commit f7e87f41f7
2 changed files with 7 additions and 0 deletions

5
changes/bug4838 Normal file
View File

@ -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.

View File

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