]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
fixup! Make router_pick_directory_server respect PDS_NO_EXISTING_*
authorNick Mathewson <nickm@torproject.org>
Tue, 23 Sep 2014 16:47:39 +0000 (12:47 -0400)
committerNick Mathewson <nickm@torproject.org>
Tue, 23 Sep 2014 16:47:39 +0000 (12:47 -0400)
Document n_busy_out, and set it correctly when we goto retry_without_exclude.

src/or/routerlist.c

index e0cb5174c3f28ed706342469da64ee7c307e8304..e65898636a3ca79eaddfa764ae76de679526f642 100644 (file)
@@ -1383,6 +1383,10 @@ router_pick_dirserver_generic(smartlist_t *sourcelist,
  *
  * If the PDS_PREFER_TUNNELED_DIR_CONNS_ flag is set, prefer directory servers
  * that we can use with BEGINDIR.
+ *
+ * If <b>n_busy_out</b> is provided, set *<b>n_busy_out</b> to the number of
+ * directories that we excluded for no other reason than
+ * PDS_NO_EXISTING_SERVERDESC_FETCH or PDS_NO_EXISTING_MICRODESC_FETCH.
  */
 static const routerstatus_t *
 router_pick_directory_server_impl(dirinfo_type_t type, int flags,
@@ -1506,17 +1510,18 @@ router_pick_directory_server_impl(dirinfo_type_t type, int flags,
   smartlist_free(overloaded_direct);
   smartlist_free(overloaded_tunnel);
 
-  if (n_busy_out)
-    *n_busy_out = n_busy;
-
   if (result == NULL && try_excluding && !options->StrictNodes && n_excluded) {
     /* If we got no result, and we are excluding nodes, and StrictNodes is
      * not set, try again without excluding nodes. */
     try_excluding = 0;
     n_excluded = 0;
+    n_busy = 0;
     goto retry_without_exclude;
   }
 
+  if (n_busy_out)
+    *n_busy_out = n_busy;
+
   return result ? result->rs : NULL;
 }