Преглед на файлове

Add check for CIRCUIT_PURPOSE_S_REND_JOINED.

These circuits stick around much longer than others on the server side for
performance reasons. Their lifetime is controlled by the client.
Mike Perry преди 14 години
родител
ревизия
5b0c0e1f89
променени са 1 файла, в които са добавени 12 реда и са изтрити 7 реда
  1. 12 7
      src/or/circuituse.c

+ 12 - 7
src/or/circuituse.c

@@ -746,13 +746,18 @@ circuit_expire_old_circuits_clientside(time_t now)
                     (long)(now - circ->timestamp_created));
           circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
         } else if (!TO_ORIGIN_CIRCUIT(circ)->is_ancient) {
-          log_notice(LD_CIRC,
-                     "Ancient non-dirty circuit %d is still around after "
-                     "%ld seconds. Purpose: %d",
-                     TO_ORIGIN_CIRCUIT(circ)->global_identifier,
-                     (long)(now - circ->timestamp_created),
-                     circ->purpose);
-          TO_ORIGIN_CIRCUIT(circ)->is_ancient = 1;
+          /* Server side rend joined circuits can end up really old, because
+           * they are reused by clients for longer than normal. The client
+           * controls their lifespan. */
+          if (circ->purpose != CIRCUIT_PURPOSE_S_REND_JOINED) {
+            log_notice(LD_CIRC,
+                       "Ancient non-dirty circuit %d is still around after "
+                       "%ld seconds. Purpose: %d",
+                       TO_ORIGIN_CIRCUIT(circ)->global_identifier,
+                       (long)(now - circ->timestamp_created),
+                       circ->purpose);
+            TO_ORIGIN_CIRCUIT(circ)->is_ancient = 1;
+          }
         }
       }
     }