]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Don't relax the timeout for already opened 1-hop circuits.
authorMike Perry <mikeperry-git@fscked.org>
Thu, 28 Mar 2013 00:43:27 +0000 (17:43 -0700)
committerNick Mathewson <nickm@torproject.org>
Fri, 29 Mar 2013 16:17:05 +0000 (12:17 -0400)
src/or/circuituse.c

index bbf219a1ef8816af718a5fc5511abfd246b6c097..8fb70f58536d4b17045cbe0800d8734f6e43107b 100644 (file)
@@ -529,7 +529,12 @@ circuit_expire_building(void)
     if (timercmp(&victim->timestamp_began, &cutoff, >))
       continue; /* it's still young, leave it alone */
 
-    if (!any_opened_circs) {
+    /* We need to double-check the opened state here because
+     * we don't want to consider opened 1-hop dircon circuits for
+     * deciding when to relax the timeout, but we *do* want to relax
+     * those circuits too if nothing else is opened *and* they still
+     * aren't either. */
+    if (!any_opened_circs && victim->state != CIRCUIT_STATE_OPEN) {
       /* It's still young enough that we wouldn't close it, right? */
       if (timercmp(&victim->timestamp_began, &close_cutoff, >)) {
         if (!TO_ORIGIN_CIRCUIT(victim)->relaxed_timeout) {