commit 28844c8403f16f184c185798c78dcd6a959450a3 Author: Nick Mathewson nickm@torproject.org Date: Mon Jan 10 13:15:51 2011 -0500
On bwhist state load failure, clear dir_read/write hist too --- changes/1863_bwhist | 5 +++++ src/or/rephist.c | 13 +++++++------ 2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/changes/1863_bwhist b/changes/1863_bwhist index c1d4d86..b9e8ef4 100644 --- a/changes/1863_bwhist +++ b/changes/1863_bwhist @@ -3,3 +3,8 @@ triggered if a future version of Tor ever changed the timing granularity at which bandwidth history is measured. Bugfix on Tor 0.1.1.11-alpha. + - Correctly clear out dir_read/dir_write history when there is an + error parsing any bw history value from the state file. Bugfix on + Tor 0.2.2.15-alpha. + + diff --git a/src/or/rephist.c b/src/or/rephist.c index 5a3a15e..f0dd451 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -1293,10 +1293,15 @@ static bw_array_t *dir_read_array = NULL; directory protocol. */ static bw_array_t *dir_write_array = NULL;
-/** Set up [dir-]read_array and [dir-]write_array. */ +/** Set up [dir-]read_array and [dir-]write_array, freeing them if they alrady + * exist. */ static void bw_arrays_init(void) { + tor_free(read_array); + tor_free(write_array); + tor_free(dir_read_array); + tor_free(dir_write_array); read_array = bw_array_new(); write_array = bw_array_new(); dir_read_array = bw_array_new(); @@ -1627,11 +1632,7 @@ rep_hist_load_state(or_state_t *state, char **err) if (!all_ok) { *err = tor_strdup("Parsing of bandwidth history values failed"); /* and create fresh arrays */ - tor_free(read_array); - tor_free(write_array); - - read_array = bw_array_new(); - write_array = bw_array_new(); + bw_arrays_init(); return -1; } return 0;