diff --git a/ChangeLog b/ChangeLog index 74c6ded8b5..3ad104b1d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Changes in version 0.2.2.3-alpha - 2009-09-23 + o Major bugfixes: + - Fix an overzealous assert in our new circuit build timeout code. + Bugfix on 0.2.2.2-alpha; fixes bug 1103. + + o Minor bugfixes: + - If the networkstatus consensus tells us that we should use a + negative circuit package window, ignore it. Otherwise we'll + believe it and then trigger an assert. Bugfix on 0.2.2.2-alpha. + + Changes in version 0.2.2.2-alpha - 2009-09-21 o Major features: - Tor now tracks how long it takes to build client-side circuits diff --git a/configure.in b/configure.in index 1edb672ab3..e2ae2a1537 100644 --- a/configure.in +++ b/configure.in @@ -4,7 +4,7 @@ dnl Copyright (c) 2007-2008, The Tor Project, Inc. dnl See LICENSE for licensing information AC_INIT -AM_INIT_AUTOMAKE(tor, 0.2.2.2-alpha) +AM_INIT_AUTOMAKE(tor, 0.2.2.3-alpha) AM_CONFIG_HEADER(orconfig.h) AC_CANONICAL_HOST diff --git a/contrib/tor-mingw.nsi.in b/contrib/tor-mingw.nsi.in index 120d23392d..5fe14e8658 100644 --- a/contrib/tor-mingw.nsi.in +++ b/contrib/tor-mingw.nsi.in @@ -9,7 +9,7 @@ !include "FileFunc.nsh" !insertmacro GetParameters -!define VERSION "0.2.2.2-alpha" +!define VERSION "0.2.2.3-alpha" !define INSTALLER "tor-${VERSION}-win32.exe" !define WEBSITE "https://www.torproject.org/" !define LICENSE "LICENSE" diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index b1de024168..adf53a8b10 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -643,6 +643,8 @@ circuit_build_times_count_pretimeouts(circuit_build_times_t *cbt) double timeout_quantile = 1.0- ((double)cbt->pre_timeouts)/ (cbt->pre_timeouts+cbt->total_build_times); + /* Make sure it doesn't exceed the synthetic max */ + timeout_quantile *= MAX_SYNTHETIC_QUANTILE; cbt->Xm = circuit_build_times_mode(cbt); tor_assert(cbt->Xm > 0); /* Use current timeout to get an estimate on alpha */ diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 259666732a..560bec55f1 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -367,10 +367,11 @@ circuit_purpose_to_controller_string(uint8_t purpose) int32_t circuit_initial_package_window(void) { - networkstatus_t *consensus = networkstatus_get_latest_consensus(); - if (consensus) - return networkstatus_get_param(consensus, "circwindow", CIRCWINDOW_START); - return CIRCWINDOW_START; + int32_t num = networkstatus_get_param(NULL, "circwindow", CIRCWINDOW_START); + /* If the consensus tells us a negative number, we'd assert. */ + if (num < 0) + num = CIRCWINDOW_START; + return num; } /** Initialize the common elements in a circuit_t, and add it to the global diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index fd38df4e68..5d1f8b24a3 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -1894,14 +1894,18 @@ networkstatus_dump_bridge_status_to_file(time_t now) } /** Return the value of a integer parameter from the networkstatus ns - * whose name is param_name. Return default_val if ns is NULL, - * or if it has no parameter called param_name. */ + * whose name is param_name. If ns is NULL, try loading the + * latest consensus ourselves. Return default_val if no latest + * consensus, or if it has no parameter called param_name. */ int32_t networkstatus_get_param(networkstatus_t *ns, const char *param_name, int32_t default_val) { size_t name_len; + if (!ns) /* if they pass in null, go find it ourselves */ + ns = networkstatus_get_latest_consensus(); + if (!ns || !ns->net_params) return default_val; diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h index c2ccfa7be8..ef62990712 100644 --- a/src/win32/orconfig.h +++ b/src/win32/orconfig.h @@ -226,5 +226,5 @@ #define USING_TWOS_COMPLEMENT /* Version number of package */ -#define VERSION "0.2.2.2-alpha" +#define VERSION "0.2.2.3-alpha"