From: Roger Dingledine Date: Fri, 9 Apr 2004 20:08:13 +0000 (+0000) Subject: expire old CIRCUIT_PURPOSE_C_REND_READY circs too X-Git-Tag: tor-0.0.6incompat-merged~59 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=48e0228f1e031a709c1deb149c7dfd187c3609cf;p=thirdparty%2Ftor.git expire old CIRCUIT_PURPOSE_C_REND_READY circs too svn:r1585 --- diff --git a/src/or/circuit.c b/src/or/circuit.c index 34cf310003..b4eab75c9b 100644 --- a/src/or/circuit.c +++ b/src/or/circuit.c @@ -452,11 +452,16 @@ void circuit_expire_building(void) { if(victim->timestamp_created + MIN_SECONDS_BEFORE_EXPIRING_CIRC > now) continue; /* it's young still, don't mess with it */ - /* if circ is !open, or if it's open but purpose is est intro or est rend, - * then mark it for close */ + /* if circ is !open, or if it's open but purpose is a non-finished + * intro or rend, then mark it for close */ if(victim->state != CIRCUIT_STATE_OPEN || victim->purpose == CIRCUIT_PURPOSE_C_ESTABLISH_REND || - victim->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO) { + victim->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO || + /* c_rend_ready circs measure age since timestamp_dirty, + * because that's set when they switch purposes + */ + (victim->purpose == CIRCUIT_PURPOSE_C_REND_READY && + victim->timestamp_dirty + MIN_SECONDS_BEFORE_EXPIRING_CIRC > now)) { if(victim->n_conn) log_fn(LOG_INFO,"Abandoning circ %s:%d:%d (state %d:%s)", victim->n_conn->address, victim->n_port, victim->n_circ_id, diff --git a/src/or/main.c b/src/or/main.c index d29ad73477..40a176ecff 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -364,7 +364,7 @@ static void run_scheduled_events(time_t now) { } /* 2. Every second, we examine pending circuits and prune the - * ones which have been pending for more than 3 seconds. + * ones which have been pending for more than a few seconds. * We do this before step 3, so it can try building more if * it's not comfortable with the number of available circuits. */