Bläddra i källkod

Don't relax the timeout for already opened 1-hop circuits.

Mike Perry 11 år sedan
förälder
incheckning
d39e6736fe
1 ändrade filer med 6 tillägg och 1 borttagningar
  1. 6 1
      src/or/circuituse.c

+ 6 - 1
src/or/circuituse.c

@@ -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) {