]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
On bwhist state load failure, clear dir_read/write hist too
authorNick Mathewson <nickm@torproject.org>
Mon, 10 Jan 2011 18:15:51 +0000 (13:15 -0500)
committerNick Mathewson <nickm@torproject.org>
Mon, 10 Jan 2011 18:15:51 +0000 (13:15 -0500)
changes/1863_bwhist
src/or/rephist.c

index c1d4d866ce6ff9ad4c3e0d31432bd12d755d7ce3..b9e8ef4c52bbc0804d6e8b4d3f4bb1d14a799771 100644 (file)
@@ -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.
+
+
index 5a3a15edbcb94dc1dbec0a7704f5ab502362a407..f0dd45128c1767ef02f1b9847f0b39dfc3ac62de 100644 (file)
@@ -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;