]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Make hidden services always check for failed intro point connections
authorteor <teor2345@gmail.com>
Thu, 2 Mar 2017 04:33:09 +0000 (15:33 +1100)
committerteor <teor2345@gmail.com>
Thu, 2 Mar 2017 04:57:58 +0000 (15:57 +1100)
Previously, they would stop checking when they exceeded their intro point
creation limit.

Fixes bug 21596; bugfix on commit d67bf8b2f23 in Tor 0.2.7.2-alpha.
Reported by alecmuffett.

changes/bug21596 [new file with mode: 0644]
src/or/rendservice.c

diff --git a/changes/bug21596 b/changes/bug21596
new file mode 100644 (file)
index 0000000..ec0a46b
--- /dev/null
@@ -0,0 +1,5 @@
+  o Minor bugfixes (hidden services):
+    - Make hidden services check for failed intro point connections, even when
+      they have exceeded their intro point creation limit. Fixes bug 21596;
+      bugfix on commit d67bf8b2f23 in Tor 0.2.7.2-alpha. Reported by
+      alecmuffett.
index cb87624df546bb23d641ad88309f98979b5b4106..c23d45cf34b2d4f544d6b8188198f5729cc0b1d0 100644 (file)
@@ -4061,6 +4061,10 @@ rend_consider_services_intro_points(void)
     smartlist_clear(exclude_nodes);
     smartlist_clear(retry_nodes);
 
+    /* Cleanup the invalid intro points and save the node objects, if any,
+     * in the exclude_nodes and retry_nodes lists. */
+    remove_invalid_intro_points(service, exclude_nodes, retry_nodes, now);
+
     /* This retry period is important here so we don't stress circuit
      * creation. */
     if (now > service->intro_period_started + INTRO_CIRC_RETRY_PERIOD) {
@@ -4070,14 +4074,10 @@ rend_consider_services_intro_points(void)
     } else if (service->n_intro_circuits_launched >=
                MAX_INTRO_CIRCS_PER_PERIOD) {
       /* We have failed too many times in this period; wait for the next
-       * one before we try again. */
+       * one before we try to initiate any more connections. */
       continue;
     }
 
-    /* Cleanup the invalid intro points and save the node objects, if apply,
-     * in the exclude_nodes and retry_nodes list. */
-    remove_invalid_intro_points(service, exclude_nodes, retry_nodes, now);
-
     /* Let's try to rebuild circuit on the nodes we want to retry on. */
     SMARTLIST_FOREACH_BEGIN(retry_nodes, rend_intro_point_t *, intro) {
       r = rend_service_launch_establish_intro(service, intro);