Wait for busy authorities/fallbacks rather than ignoring excluded nodes

Applies the 6c443e987d fix to router_pick_directory_server_impl.

6c443e987d applied to directory servers chosen from the consensus,
and was:
"Tweak the 9969 fix a little

If we have busy nodes and excluded nodes, then don't retry with the
excluded ones enabled. Instead, wait for the busy ones to be nonbusy."
This commit is contained in:
teor (Tim Wilson-Brown) 2015-12-14 20:20:52 +11:00
parent 6ba8afe5f8
commit 978210d5a8
2 changed files with 11 additions and 4 deletions

5
changes/feature17864 Normal file
View File

@ -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".

View File

@ -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;
}