Commit 978210d5 authored by teor (Tim Wilson-Brown)'s avatar teor (Tim Wilson-Brown)
Browse files

Wait for busy authorities/fallbacks rather than ignoring excluded nodes

Applies the 6c443e98 fix to router_pick_directory_server_impl.

6c443e98 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."
parent 6ba8afe5
Loading
Loading
Loading
Loading

changes/feature17864

0 → 100644
+5 −0
Original line number Diff line number Diff line
  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".
+6 −4
Original line number Diff line number Diff line
@@ -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;
}