[tor-commits] [tor/master] Make sure the microdesc cache is loaded before setting a v3 md consensus

nickm at torproject.org nickm at torproject.org
Wed Sep 28 18:36:14 UTC 2011


commit 6201b8b361fb56d9d488cea4ed47d5e0819d94b8
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Sep 28 14:14:31 2011 -0400

    Make sure the microdesc cache is loaded before setting a v3 md consensus
    
    Otherwise, we can wind up munging our reference counts if we set it in
    the middle of loading the nodes.  This happens because
    nodelist_set_consensus() and microdesc_reload_cache() are both in the
    business of adjusting microdescriptors' references.
---
 src/or/nodelist.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index 39bc082..b93b919 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -177,7 +177,10 @@ nodelist_set_consensus(networkstatus_t *ns)
 {
   const or_options_t *options = get_options();
   int authdir = authdir_mode_v2(options) || authdir_mode_v3(options);
+
   init_nodelist();
+  if (ns->flavor == FLAV_MICRODESC)
+    (void) get_microdesc_cache(); /* Make sure it exists first. */
 
   SMARTLIST_FOREACH(the_nodelist->nodes, node_t *, node,
                     node->rs = NULL);



More information about the tor-commits mailing list