]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Minor fix to buffer stats.
authorKarsten Loesing <karsten.loesing@gmx.net>
Thu, 3 Dec 2009 09:51:51 +0000 (10:51 +0100)
committerKarsten Loesing <karsten.loesing@gmx.net>
Thu, 3 Dec 2009 09:51:51 +0000 (10:51 +0100)
Do not segfault when writing buffer stats when we haven't observed a
single circuit to report about.  This is a minor bug that would only show
up in testing environments with no traffic and with reduced stats
intervals.

src/or/rephist.c

index 1ff9cde69fb706ca1073e7b0c04fe87e9f27ef2d..003e082d5852194127c82f55d1a6c35f52cb1348 100644 (file)
@@ -2701,9 +2701,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)