diff options
author | Roger Dingledine <arma@torproject.org> | 2008-10-15 00:36:09 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2008-10-15 00:36:09 +0000 |
commit | 4520500cde57f940b68138e3a771f989afe8d60c (patch) | |
tree | 4d0e8f06bd03db4eedf455f5565691eb56b75c5c | |
parent | ebf6591e6f23920ebc86fa370459b1aceddd2569 (diff) | |
download | tor-4520500cde57f940b68138e3a771f989afe8d60c.tar.gz tor-4520500cde57f940b68138e3a771f989afe8d60c.zip |
put in karsten's patch #1 for proposal 155, modified
svn:r17106
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | doc/spec/proposals/155-four-hidden-service-improvements.txt | 2 | ||||
-rw-r--r-- | src/or/circuituse.c | 22 |
3 files changed, 20 insertions, 6 deletions
@@ -3,6 +3,8 @@ Changes in version 0.2.1.7-alpha - 2008-10-xx - Now NodeFamily and MyFamily config options allow spaces in identity fingerprints, so it's easier to paste them in. Suggested by Lucky Green. + - Reduce extension timeout for introduction circuits from 60 to 30 + seconds. o Minor bugfixes: - Minor fix in the warning messages when you're having problems diff --git a/doc/spec/proposals/155-four-hidden-service-improvements.txt b/doc/spec/proposals/155-four-hidden-service-improvements.txt index 6d681f8a81..e80700e176 100644 --- a/doc/spec/proposals/155-four-hidden-service-improvements.txt +++ b/doc/spec/proposals/155-four-hidden-service-improvements.txt @@ -18,7 +18,7 @@ Overview: in the network as well as connection establishment time. Some of these design changes have side-effects on anonymity or overall network load which had to be weighed up against individual performance gains. A - discussion of seven possible design changes [2] has lead to a selection + discussion of seven possible design changes [2] has led to a selection of four changes [3] that are proposed to be implemented here. Design: diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 467a195795..7da5508880 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -251,11 +251,13 @@ void circuit_expire_building(time_t now) { circuit_t *victim, *circ = global_circuitlist; - time_t cutoff = now - get_options()->CircuitBuildTimeout; - time_t begindir_cutoff = now - get_options()->CircuitBuildTimeout/2; + time_t general_cutoff = now - get_options()->CircuitBuildTimeout; + time_t begindir_cutoff = general_cutoff/2; + time_t introcirc_cutoff = general_cutoff/2; cpath_build_state_t *build_state; while (circ) { + time_t cutoff; victim = circ; circ = circ->next; if (!CIRCUIT_IS_ORIGIN(victim) || /* didn't originate here */ @@ -263,13 +265,23 @@ circuit_expire_building(time_t now) continue; build_state = TO_ORIGIN_CIRCUIT(victim)->build_state; - if (victim->timestamp_created > - ((build_state && build_state->onehop_tunnel) ? - begindir_cutoff : cutoff)) + if (build_state && build_state->onehop_tunnel) + cutoff = begindir_cutoff; + else if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCING) + cutoff = introcirc_cutoff; + else + cutoff = general_cutoff; + if (victim->timestamp_created > cutoff) continue; /* it's still young, leave it alone */ #if 0 /* some debug logs, to help track bugs */ + if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCING && + victim->timestamp_created <= introcirc_cutoff && + victim->timestamp_created > general_cutoff) + log_info(LD_REND|LD_CIRC, "Timing out introduction circuit which we " + "would not have done if it had been a general circuit."); + if (victim->purpose >= CIRCUIT_PURPOSE_C_INTRODUCING && victim->purpose <= CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED) { if (!victim->timestamp_dirty) |