Commit 5385a023 authored by Nick Mathewson's avatar Nick Mathewson 🥔
Browse files

Do not apply 'max_failures' to random-exponential schedules.

Fixes bug 20536; bugfix on 0.2.9.1-alpha.
parent e9ce1819
Loading
Loading
Loading
Loading

changes/bug20536

0 → 100644
+6 −0
Original line number Diff line number Diff line
  o Major bugfixes (download scheduling):
    - When using an exponential backoff schedule, do not give up on
      dowloading just because we have failed a bunch of times.  Since
      each delay is longer than the last, retrying indefinitely won't
      hurt. Fixes bug 20536; bugfix on 0.2.9.1-alpha.
+9 −3
Original line number Diff line number Diff line
@@ -114,9 +114,15 @@ static inline int
download_status_is_ready(download_status_t *dls, time_t now,
                         int max_failures)
{
  if (dls->backoff == DL_SCHED_DETERMINISTIC) {
    /* Deterministic schedules can hit an endpoint; exponential backoff
     * schedules just wait longer and longer. */
    int under_failure_limit = (dls->n_download_failures <= max_failures
                               && dls->n_download_attempts <= max_failures);
  return (under_failure_limit && dls->next_attempt_at <= now);
    if (!under_failure_limit)
      return 0;
  }
  return dls->next_attempt_at <= now;
}

static void download_status_mark_impossible(download_status_t *dl);