summaryrefslogtreecommitdiff
path: root/src/or/rendclient.c
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@ev0ke.net>2014-11-10 14:38:53 -0500
committerDavid Goulet <dgoulet@ev0ke.net>2014-11-10 15:02:54 -0500
commit34eb007d2201bad44bd6b72681f2c3552445dfc4 (patch)
tree785412fba2f69c61a785c3415191557760f8856b /src/or/rendclient.c
parentfed78bce8bc645866578a1739a10ee598bbaf4e0 (diff)
downloadtor-34eb007d2201bad44bd6b72681f2c3552445dfc4.tar.gz
tor-34eb007d2201bad44bd6b72681f2c3552445dfc4.zip
Fix: don't report timeout when closing parallel intro points
When closing parallel introduction points, the given reason (timeout) was actually changed to "no reason" thus when the circuit purpose was CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT, we were reporting an introduction point failure and flagging it "unreachable". After three times, that intro point gets removed from the rend cache object. In the case of CIRCUIT_PURPOSE_C_INTRODUCING, the intro point was flagged has "timed out" and thus not used until the connection to the HS is closed where that flag gets reset. This commit adds an internal circuit reason called END_CIRC_REASON_IP_NOW_REDUNDANT which tells the closing circuit mechanism to not report any intro point failure. This has been observed while opening hundreds of connections to an HS on different circuit for each connection. This fix makes this use case to work like a charm. Fixes #13698. Signed-off-by: David Goulet <dgoulet@ev0ke.net>
Diffstat (limited to 'src/or/rendclient.c')
-rw-r--r--src/or/rendclient.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 7abbfd6fc5..4ff000d3ed 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -368,8 +368,7 @@ rend_client_rendcirc_has_opened(origin_circuit_t *circ)
}
/**
- * Called to close other intro circuits we launched in parallel
- * due to timeout.
+ * Called to close other intro circuits we launched in parallel.
*/
static void
rend_client_close_other_intros(const char *onion_address)
@@ -387,7 +386,7 @@ rend_client_close_other_intros(const char *onion_address)
log_info(LD_REND|LD_CIRC, "Closing introduction circuit %d that we "
"built in parallel (Purpose %d).", oc->global_identifier,
c->purpose);
- circuit_mark_for_close(c, END_CIRC_REASON_TIMEOUT);
+ circuit_mark_for_close(c, END_CIRC_REASON_IP_NOW_REDUNDANT);
}
}
}