summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/feature178645
-rw-r--r--src/or/routerlist.c10
2 files changed, 11 insertions, 4 deletions
diff --git a/changes/feature17864 b/changes/feature17864
new file mode 100644
index 0000000000..1cf156206b
--- /dev/null
+++ b/changes/feature17864
@@ -0,0 +1,5 @@
+ o Minor feature (directory downloads):
+ - Wait for busy authorities and fallbacks to become non-busy when
+ bootstrapping. (A similar change was made in 6c443e987d for
+ directory servers chosen from the consensus.)
+ Closes ticket 17864; patch by "teor".
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 051bac5de5..c45854c52f 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -1739,22 +1739,24 @@ router_pick_trusteddirserver_impl(const smartlist_t *sourcelist,
result = &selection->fake_status;
}
- if (n_busy_out)
- *n_busy_out = n_busy;
-
smartlist_free(direct);
smartlist_free(tunnel);
smartlist_free(overloaded_direct);
smartlist_free(overloaded_tunnel);
- if (result == NULL && try_excluding && !options->StrictNodes && n_excluded) {
+ if (result == NULL && try_excluding && !options->StrictNodes && n_excluded
+ && !n_busy) {
/* 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;
}