[tor-commits] [tor/master] Build circuits more readily when DisableNetwork goes to 0

nickm at torproject.org nickm at torproject.org
Fri Aug 8 14:09:22 UTC 2014


commit fcac4b4467427e8f6ad948e8c8e6f34a0131e716
Author: Roger Dingledine <arma at torproject.org>
Date:   Tue Aug 5 16:54:46 2014 -0400

    Build circuits more readily when DisableNetwork goes to 0
    
    When Tor starts with DisabledNetwork set, it would correctly
    conclude that it shouldn't try making circuits, but it would
    mistakenly cache this conclusion and continue believing it even
    when DisableNetwork is set to 0. Fixes the bug introduced by the
    fix for bug 11200; bugfix on 0.2.5.4-alpha.
---
 changes/bug11200-caching |    7 +++++++
 src/or/nodelist.c        |   21 ++++++++++++---------
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/changes/bug11200-caching b/changes/bug11200-caching
new file mode 100644
index 0000000..e3fbaec
--- /dev/null
+++ b/changes/bug11200-caching
@@ -0,0 +1,7 @@
+  o Major bugfixes:
+    - When Tor starts with DisabledNetwork set, it would correctly
+      conclude that it shouldn't try making circuits, but it would
+      mistakenly cache this conclusion and continue believing it even
+      when DisableNetwork is set to 0. Fixes the bug introduced by the
+      fix for bug 11200; bugfix on 0.2.5.4-alpha.
+
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index 8f87081..7b1f338 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1275,10 +1275,21 @@ static char dir_info_status[256] = "";
 int
 router_have_minimum_dir_info(void)
 {
+  static int logged_delay=0;
+  const char *delay_fetches_msg = NULL;
+  if (should_delay_dir_fetches(get_options(), &delay_fetches_msg)) {
+    if (!logged_delay)
+      log_notice(LD_DIR, "Delaying directory fetches: %s", delay_fetches_msg);
+    logged_delay=1;
+    strlcpy(dir_info_status, delay_fetches_msg,  sizeof(dir_info_status));
+    return 0;
+  }
+  logged_delay = 0; /* reset it if we get this far */
+
   if (PREDICT_UNLIKELY(need_to_update_have_min_dir_info)) {
     update_router_have_minimum_dir_info();
-    need_to_update_have_min_dir_info = 0;
   }
+
   return have_min_dir_info;
 }
 
@@ -1498,7 +1509,6 @@ update_router_have_minimum_dir_info(void)
   const networkstatus_t *consensus =
     networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor());
   int using_md;
-  const char *delay_fetches_msg = NULL;
 
   if (!consensus) {
     if (!networkstatus_get_latest_consensus())
@@ -1511,13 +1521,6 @@ update_router_have_minimum_dir_info(void)
     goto done;
   }
 
-  if (should_delay_dir_fetches(get_options(), &delay_fetches_msg)) {
-    log_notice(LD_DIR, "Delaying directory fetches: %s", delay_fetches_msg);
-    strlcpy(dir_info_status, delay_fetches_msg,  sizeof(dir_info_status));
-    res = 0;
-    goto done;
-  }
-
   using_md = consensus->flavor == FLAV_MICRODESC;
 
   {





More information about the tor-commits mailing list