[tor-commits] [tor/release-0.2.9] Count HTTP 503 as a download failure.

nickm at torproject.org nickm at torproject.org
Mon Nov 7 16:02:23 UTC 2016


commit 864c42f4d66641028005f8d11868368260a37b84
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Nov 7 09:43:12 2016 -0500

    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.
---
 changes/bug20593   | 6 ++++++
 src/or/directory.c | 9 +++++----
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/changes/bug20593 b/changes/bug20593
new file mode 100644
index 0000000..e9f54d3
--- /dev/null
+++ b/changes/bug20593
@@ -0,0 +1,6 @@
+  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.
diff --git a/src/or/directory.c b/src/or/directory.c
index 02f1438..d1333a8 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -3933,15 +3933,16 @@ 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)
-      ++dls->n_download_failures;
+  /* count the failure */
+  if (dls->n_download_failures < IMPOSSIBLE_TO_DOWNLOAD-1) {
+    ++dls->n_download_failures;
   }
 
   if (dls->increment_on == DL_SCHED_INCREMENT_FAILURE) {





More information about the tor-commits mailing list