[tor-commits] [tor/master] Make FetchUselessDescriptors fetch all desc types

nickm at torproject.org nickm at torproject.org
Wed Sep 7 15:20:36 UTC 2011


commit 3b02a959b32c1664a2a62b36badda343cca1bc6a
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Aug 29 11:18:06 2011 -0400

    Make FetchUselessDescriptors fetch all desc types
    
    Previously, if you were set up to use microdescriptors, and you
    weren't a cache, you'd never fetch router descriptors (except for
    bridges).  Now FetchUselessDescriptors causes descriptors and
    mirodescs to get cached.  Also, FetchUselessDescriptors changes the
    behavior of "UseMicrodescriptors auto" to be off, since there's no
    point in saying "UseMicrodescriptors 1" when you have full descriptors
    too.
    
    Fix for bug 3851; bugfix on 0.2.3.1-alpha.
---
 changes/bug3851        |    4 ++++
 src/or/microdesc.c     |    9 +++++++--
 src/or/networkstatus.c |    4 ++++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/changes/bug3851 b/changes/bug3851
new file mode 100644
index 0000000..91572f0
--- /dev/null
+++ b/changes/bug3851
@@ -0,0 +1,4 @@
+  o Minor bugfixes:
+    - Make 'FetchUselessDescriptors' cause all descriptor types and
+      all consensus types get fetched. Fixes bug 3851; bugfix on
+      0.2.3.1-alpha.
diff --git a/src/or/microdesc.c b/src/or/microdesc.c
index 627fad5..510b2f4 100644
--- a/src/or/microdesc.c
+++ b/src/or/microdesc.c
@@ -698,8 +698,9 @@ we_use_microdescriptors_for_circuits(const or_options_t *options)
   int ret = options->UseMicrodescriptors;
   if (ret == -1) {
     /* UseMicrodescriptors is "auto"; we need to decide: */
-    /* So we decide that we'll use microdescriptors iff we are not a server */
-    ret = ! server_mode(options);
+    /* So we decide that we'll use microdescriptors iff we are not a server,
+     * and we're not autofetching everything. */
+    ret = !server_mode(options) && !options->FetchUselessDescriptors;
   }
   return ret;
 }
@@ -710,6 +711,8 @@ we_fetch_microdescriptors(const or_options_t *options)
 {
   if (directory_caches_dir_info(options))
     return 1;
+  if (options->FetchUselessDescriptors)
+    return 1;
   return we_use_microdescriptors_for_circuits(options);
 }
 
@@ -719,6 +722,8 @@ we_fetch_router_descriptors(const or_options_t *options)
 {
   if (directory_caches_dir_info(options))
     return 1;
+  if (options->FetchUselessDescriptors)
+    return 1;
   return ! we_use_microdescriptors_for_circuits(options);
 }
 
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 868c2a2..398f041 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -1187,6 +1187,10 @@ we_want_to_fetch_flavor(const or_options_t *options, int flavor)
      * it ourselves. */
     return 1;
   }
+  if (options->FetchUselessDescriptors) {
+    /* In order to get all descriptors, we need to fetch all consensuses. */
+    return 1;
+  }
   /* Otherwise, we want the flavor only if we want to use it to build
    * circuits. */
   return flavor == usable_consensus_flavor();





More information about the tor-commits mailing list