[tor-commits] [tor/master] Fix some issues with reporting exit-free networks

nickm at torproject.org nickm at torproject.org
Tue Feb 17 17:57:34 UTC 2015


commit 8eb3d81e6e82f056f3c733b898388b8258dc12fd
Author: Nick Mathewson <nickm at torproject.org>
Date:   Tue Feb 17 12:07:24 2015 -0500

    Fix some issues with reporting exit-free networks
    
    Fixes bug 14918.
---
 changes/bug14918  |    7 +++++++
 src/or/nodelist.c |   23 ++++++++++++++---------
 2 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/changes/bug14918 b/changes/bug14918
new file mode 100644
index 0000000..8e196cc
--- /dev/null
+++ b/changes/bug14918
@@ -0,0 +1,7 @@
+  o Minor bugfixes (path counting):
+    - When deciding whether we have any exit nodes, count the number listed
+      in the consensus, not the number we have descriptors for. Fixes part
+      of bug 14918; bugfix on 0.2.6.2-alpha.
+    - Do not warn that we are missing directory information if we have
+      decided not to fetch directory information due to a long period
+      of idleness. Fixes part of bug 14918; bugfix on 0.2.6.2-alpha.
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index 249c198..b20de81 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1354,9 +1354,10 @@ get_dir_info_status_string(void)
 }
 
 /** Iterate over the servers listed in <b>consensus</b>, and count how many of
- * them seem like ones we'd use, and how many of <em>those</em> we have
- * descriptors for.  Store the former in *<b>num_usable</b> and the latter in
- * *<b>num_present</b>.
+ * them seem like ones we'd use (store this in *<b>num_usable</b>), and how
+ * many of <em>those</em> we have descriptors for (store this in
+ * *<b>num_present</b>).
+ *
  * If <b>in_set</b> is non-NULL, only consider those routers in <b>in_set</b>.
  * If <b>exit_only</b> is USABLE_DESCRIPTOR_EXIT_ONLY, only consider nodes
  * with the Exit flag.
@@ -1409,10 +1410,11 @@ count_usable_descriptors(int *num_present, int *num_usable,
 }
 
 /** Return an estimate of which fraction of usable paths through the Tor
- * network we have available for use.
- * Count how many routers seem like ones we'd use, and how many of
- * <em>those</em> we have descriptors for.  Store the former in
- * *<b>num_usable_out</b> and the latter in *<b>num_present_out</b>.
+ * network we have available for use.  Count how many routers seem like ones
+ * we'd use (store this in *<b>num_usable_out</b>), and how many of
+ * <em>those</em> we have descriptors for (store this in
+ * *<b>num_present_out</b>.)
+ *
  * If **<b>status_out</b> is present, allocate a new string and print the
  * available percentages of guard, middle, and exit nodes to it, noting
  * whether there are exits in the consensus.
@@ -1475,7 +1477,7 @@ compute_frac_paths_available(const networkstatus_t *consensus,
    * building exit paths */
   /* Update our understanding of whether the consensus has exits */
   consensus_path_type_t old_have_consensus_path = have_consensus_path;
-  have_consensus_path = ((np > 0) ?
+  have_consensus_path = ((nu > 0) ?
                          CONSENSUS_PATH_EXIT :
                          CONSENSUS_PATH_INTERNAL);
 
@@ -1677,7 +1679,10 @@ update_router_have_minimum_dir_info(void)
                      "can only build %d%% of likely paths. (We have %s.)",
                      using_md?"micro":"", num_present, num_usable,
                      (int)(paths*100), status);
-        log_warn(LD_NET, "%s%s", dir_info_status, suppression_msg);
+        if (!should_delay_dir_fetches(options, NULL) &&
+            !directory_too_idle_to_fetch_descriptors(options, now)) {
+          log_warn(LD_NET, "%s%s", dir_info_status, suppression_msg);
+        }
         tor_free(suppression_msg);
       }
       tor_free(status);





More information about the tor-commits mailing list