]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix: close intro circuit if no more intro points are usable
authorDavid Goulet <dgoulet@ev0ke.net>
Mon, 19 Jan 2015 15:23:58 +0000 (10:23 -0500)
committerDavid Goulet <dgoulet@ev0ke.net>
Mon, 19 Jan 2015 15:23:58 +0000 (10:23 -0500)
Once a NACK is received on the intro circuit, tor tries an other usable one
by extending the current circuit to it. If no more intro points are usable,
now close the circuit. Also, it's reason is changed before closing it so we
don't report again an intro point failure and trigger an extra HS fetch.

Fixes #14224

Signed-off-by: David Goulet <dgoulet@ev0ke.net>
changes/bug14224 [new file with mode: 0644]
src/or/rendclient.c

diff --git a/changes/bug14224 b/changes/bug14224
new file mode 100644 (file)
index 0000000..0608940
--- /dev/null
@@ -0,0 +1,4 @@
+  o Minor Bugfix
+    - Close the intro circuit once we don't have any more usable intro
+      points instead of making it timeout at some point. This also make sure
+      no extra HS descriptor fetch is triggered.
index 1353ee38d57c0e1be3884f176e7eca001ee0e459..31e220aca2b7e2f9fbe7b07a4816b55e61fda3ca 100644 (file)
@@ -469,8 +469,11 @@ rend_client_introduction_acked(origin_circuit_t *circ,
        * too? */
       return result;
     } else {
-      /* Close circuit because no more intro points are usable thus this
-       * circuit is not useful anymore. */
+      /* Close circuit because no more intro points are usable thus not
+       * useful anymore. Change it's purpose before so we don't report an
+       * intro point failure again triggering an extra descriptor fetch. */
+      circuit_change_purpose(TO_CIRCUIT(circ),
+          CIRCUIT_PURPOSE_C_INTRODUCE_ACKED);
       circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_FINISHED);
     }
   }