Explorar el Código

Merge commit 'karsten/fix-cell-stats'

Conflicts:
	ChangeLog
Nick Mathewson hace 15 años
padre
commit
62c2a5a883
Se han modificado 2 ficheros con 10 adiciones y 0 borrados
  1. 3 0
      ChangeLog
  2. 7 0
      src/or/rephist.c

+ 3 - 0
ChangeLog

@@ -22,6 +22,9 @@ Changes in version 0.2.2.7-alpha - 2009-??-??
       0.1.0.1-rc.
     - Update our OpenSSL 0.9.8l fix so that it works with OpenSSL 0.9.8m
       too.
+    - Do not segfault when writing buffer stats when we haven't observed
+      a single circuit to report about. Found by Fabian Lanze. Bugfix on
+      0.2.2.1-alpha.
 
 
 Changes in version 0.2.2.6-alpha - 2009-11-19

+ 7 - 0
src/or/rephist.c

@@ -2705,9 +2705,16 @@ rep_hist_buffer_stats_write(time_t now)
   memset(circs_in_share, 0, SHARES * sizeof(int));
   memset(queued_cells, 0, SHARES * sizeof(double));
   memset(time_in_queue, 0, SHARES * sizeof(double));
+  if (!circuits_for_buffer_stats)
+    circuits_for_buffer_stats = smartlist_create();
   smartlist_sort(circuits_for_buffer_stats,
                  _buffer_stats_compare_entries);
   number_of_circuits = smartlist_len(circuits_for_buffer_stats);
+  if (number_of_circuits < 1) {
+    log_info(LD_HIST, "Attempt to write cell statistics to disk failed. "
+             "We haven't seen a single circuit to report about.");
+    goto done;
+  }
   i = 0;
   SMARTLIST_FOREACH_BEGIN(circuits_for_buffer_stats,
                           circ_buffer_stats_t *, stat)