diff --git a/ChangeLog b/ChangeLog index 72c9dfd55f..da363d9978 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,17 @@ -Changes in version 0.2.2.2-alpha - 2009-09-?? +Changes in version 0.2.2.2-alpha - 2009-09-17 o Major features: + - Tor now tracks how long it takes to build client-side circuits + over time, and adapts its timeout to local network performance. + Since a circuit that takes a long time to build will also provide + bad performance, we get significant latency improvements by + discarding the slowest 20% of circuits. Specifically, Tor creates + circuits more aggressively than usual until it has enough data + points for a good timeout estimate. Implements proposal 151. + We are especially looking for reports (good and bad) from users with + both EDGE and broadband connections that can move from broadband + to EDGE and find out if the build-time data in the .tor/state gets + reset without loss of Tor usability. You should also see a notice + log message telling you that Tor has reset its timeout. - Authorities can now vote on arbitary integer values as part of the consensus process. This is designed to help set network parameters. Implements proposal 167. diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 177852f91a..5ea3a31afe 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -179,7 +179,7 @@ circuit_build_times_add_time(circuit_build_times_t *cbt, build_time_t time) cbt->total_build_times++; if ((cbt->total_build_times % BUILD_TIMES_SAVE_STATE_EVERY) == 0) { - /* Save state every 100 circuit builds */ + /* Save state every n circuit builds */ if (!unit_tests && !get_options()->AvoidDiskWrites) or_state_mark_dirty(get_or_state(), 0); } diff --git a/src/or/or.h b/src/or/or.h index bdb4d97924..1dcb2494c6 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2882,13 +2882,13 @@ void entry_guards_free_all(void); /** Width of the histogram bins in milliseconds */ #define BUILDTIME_BIN_WIDTH ((build_time_t)50) -/** Cuttof point on the CDF for our timeout estimation. +/** Cutoff point on the CDF for our timeout estimation. * TODO: This should be moved to the consensus */ #define BUILDTIMEOUT_QUANTILE_CUTOFF 0.8 /** A build_time_t is milliseconds */ typedef uint32_t build_time_t; -#define BUILD_TIME_MAX ((build_time_t)(INT32_MAX)) +#define BUILD_TIME_MAX ((build_time_t)(INT32_MAX)) /** Have we received a cell in the last N seconds? */ #define NETWORK_LIVE_MULTIPLIER (RECENT_CIRCUITS/2.5) @@ -2903,7 +2903,7 @@ typedef uint32_t build_time_t; #define BUILD_TIMES_TEST_FREQUENCY 60 /** Save state every 10 circuits */ -#define BUILD_TIMES_SAVE_STATE_EVERY 10 +#define BUILD_TIMES_SAVE_STATE_EVERY 10 typedef struct { /** The circular array of recorded build times in milliseconds */