Commit 91188540 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Merge branch 'maint-0.3.0' into maint-0.3.1

parents 89b9951e 16bdb9e3
Loading
Loading
Loading
Loading

changes/bug23470

0 → 100644
+6 −0
Original line number Diff line number Diff line
  o Minor bugfix (relay address resolution):
    - Avoid unnecessary calls to directory_fetches_from_authorities()
      on relays. This avoids spurious address resolutions and
      descriptor rebuilds. This is a mitigation for 21789. The original
      bug was introduced in commit 35bbf2e as part of prop210.
      Fixes 23470 in 0.2.8.1-alpha.
+11 −11
Original line number Diff line number Diff line
@@ -5124,26 +5124,24 @@ connection_dir_finished_connecting(dir_connection_t *conn)
STATIC const smartlist_t *
find_dl_schedule(download_status_t *dls, const or_options_t *options)
{
  const int dir_server = dir_server_mode(options);
  const int multi_d = networkstatus_consensus_can_use_multiple_directories(
                                                                    options);
  const int we_are_bootstrapping = networkstatus_consensus_is_bootstrapping(
                                                                 time(NULL));
  const int use_fallbacks = networkstatus_consensus_can_use_extra_fallbacks(
                                                                    options);
  switch (dls->schedule) {
    case DL_SCHED_GENERIC:
      if (dir_server) {
      /* Any other directory document */
      if (dir_server_mode(options)) {
        /* A directory authority or directory mirror */
        return options->TestingServerDownloadSchedule;
      } else {
        return options->TestingClientDownloadSchedule;
      }
    case DL_SCHED_CONSENSUS:
      if (!multi_d) {
      if (!networkstatus_consensus_can_use_multiple_directories(options)) {
        /* A public relay */
        return options->TestingServerConsensusDownloadSchedule;
      } else {
        if (we_are_bootstrapping) {
          if (!use_fallbacks) {
        /* A client or bridge */
        if (networkstatus_consensus_is_bootstrapping(time(NULL))) {
          /* During bootstrapping */
          if (!networkstatus_consensus_can_use_extra_fallbacks(options)) {
            /* A bootstrapping client without extra fallback directories */
            return
             options->ClientBootstrapConsensusAuthorityOnlyDownloadSchedule;
@@ -5159,6 +5157,8 @@ find_dl_schedule(download_status_t *dls, const or_options_t *options)
              options->ClientBootstrapConsensusFallbackDownloadSchedule;
          }
        } else {
          /* A client with a reasonably live consensus, with or without
           * certificates */
          return options->TestingClientConsensusDownloadSchedule;
        }
      }