summaryrefslogtreecommitdiff
path: root/src/or/circuituse.c
diff options
context:
space:
mode:
authorRobert Ransom <rransom.8774@gmail.com>2011-12-24 00:46:37 -0800
committerRobert Ransom <rransom.8774@gmail.com>2011-12-27 08:02:43 -0800
commit078e3e9dd59520b7f40a126a91e89eba91098c49 (patch)
treef93fd2aeb654cd995a6ef693be2b9e7831c8fa61 /src/or/circuituse.c
parent4b13c33c0c18c66cc39caba9b70005bbe43c6613 (diff)
downloadtor-078e3e9dd59520b7f40a126a91e89eba91098c49.tar.gz
tor-078e3e9dd59520b7f40a126a91e89eba91098c49.zip
Add an option to close 'almost-connected' HS client circs on timeout
Diffstat (limited to 'src/or/circuituse.c')
-rw-r--r--src/or/circuituse.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index 58d8aa6dcf..d9d95bc68a 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -511,16 +511,18 @@ circuit_expire_building(void)
}
}
- /* If this is a hidden-service circuit which is far enough along
- * in connecting to its destination, and we haven't already
- * flagged it as 'timed out', flag it as 'timed out' so we'll
- * launch another intro or rend circ, but don't mark it for close
- * yet.
+ /* If this is a hidden service client circuit which is far enough
+ * along in connecting to its destination, and we haven't already
+ * flagged it as 'timed out', and the user has not told us to
+ * close such circs immediately on timeout, flag it as 'timed out'
+ * so we'll launch another intro or rend circ, but don't mark it
+ * for close yet.
*
* (Circs flagged as 'timed out' are given a much longer timeout
* period above, so we won't close them in the next call to
* circuit_expire_building.) */
- if (!(TO_ORIGIN_CIRCUIT(victim)->hs_circ_has_timed_out)) {
+ if (!(options->CloseHSClientCircuitsImmediatelyOnTimeout) &&
+ !(TO_ORIGIN_CIRCUIT(victim)->hs_circ_has_timed_out)) {
switch (victim->purpose) {
case CIRCUIT_PURPOSE_C_REND_READY:
/* We only want to spare a rend circ if it has been specified in