]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Allow infinitely long delays in exponential-backoff downloads
authorNick Mathewson <nickm@torproject.org>
Mon, 7 Nov 2016 01:14:34 +0000 (20:14 -0500)
committerNick Mathewson <nickm@torproject.org>
Mon, 7 Nov 2016 14:19:35 +0000 (09:19 -0500)
It's only safe to remove the failure limit (per 20536) if we are in
fact waiting a bit longer each time we try to download.

Fixes bug 20534; bugfix on 0.2.9.1-alpha.

changes/bug20534 [new file with mode: 0644]
src/or/directory.c

diff --git a/changes/bug20534 b/changes/bug20534
new file mode 100644 (file)
index 0000000..1ffa1f3
--- /dev/null
@@ -0,0 +1,6 @@
+  o Minor bugfixes (directory download scheduling):
+    - Remove the maximum delay on exponential-backoff scheduling.
+      Since we now allow an infinite number of failures (see ticket
+      20536), we must now allow the time to grow longer on each failure.
+      Fixes bug 20534; bugfix on 0.2.9.1-alpha.
+
index 24490b74261e2d0faa46c1574ee9d45af2e65300..5fc15724cc5b0722890e391792f050a492cecb93 100644 (file)
@@ -3770,7 +3770,10 @@ find_dl_min_and_max_delay(download_status_t *dls, const or_options_t *options,
   const smartlist_t *schedule = find_dl_schedule(dls, options);
   tor_assert(schedule != NULL && smartlist_len(schedule) >= 2);
   *min = *((int *)(smartlist_get(schedule, 0)));
-  *max = *((int *)((smartlist_get(schedule, smartlist_len(schedule) - 1))));
+  if (dls->backoff == DL_SCHED_DETERMINISTIC)
+    *max = *((int *)((smartlist_get(schedule, smartlist_len(schedule) - 1))));
+  else
+    *max = INT_MAX;
 }
 
 /** Advance one delay step.  The algorithm is to use the previous delay to