Commit 864c42f4 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Count HTTP 503 as a download failure.

Because as Teor puts it: "[Resetting on 503] is exactly what we
don't want when relays are busy - imagine clients doing an automatic
reset every time they DoS a relay..."

Fixes bug 20593.
parent 667ba776
Loading
Loading
Loading
Loading

changes/bug20593

0 → 100644
+6 −0
Original line number Diff line number Diff line
  o Minor bugfixes (client directory scheduling):
    - Treat "relay too busy to answer request" as a failed request and a
      reason to back off on our retry frequency. This is safe now that
      exponential backups retry indefinitely, and avoids a bug where we would
      reset our download schedule erroneously.
      Fixes bug 20593; bugfix on 0.2.9.1-alpha.
+5 −4
Original line number Diff line number Diff line
@@ -3933,14 +3933,15 @@ time_t
download_status_increment_failure(download_status_t *dls, int status_code,
                                  const char *item, int server, time_t now)
{
  (void) status_code; // XXXX no longer used.
  (void) server; // XXXX no longer used.
  int increment = -1;
  int min_delay = 0, max_delay = INT_MAX;

  tor_assert(dls);

  /* only count the failure if it's permanent, or we're a server */
  if (status_code != 503 || server) {
    if (dls->n_download_failures < IMPOSSIBLE_TO_DOWNLOAD-1)
  /* count the failure */
  if (dls->n_download_failures < IMPOSSIBLE_TO_DOWNLOAD-1) {
    ++dls->n_download_failures;
  }