Fix desc stats on bridge authorities that didn't serve anything.

This commit is contained in:
Karsten Loesing 2012-05-15 12:39:08 +02:00
parent 98a30daf34
commit 57359b5336
2 changed files with 25 additions and 20 deletions

5
changes/task-5891 Normal file
View File

@ -0,0 +1,5 @@
o Minor bugfixes:
- Fix a bug where a bridge authority crashes if it has seen no
directory requests when it's time to write statistics to disk.
Fixes #5508 and #5891.

View File

@ -2650,18 +2650,17 @@ rep_hist_format_desc_stats(time_t now)
const char *key;
void *val;
unsigned size;
int *vals;
int *vals, max = 0, q3 = 0, md = 0, q1 = 0, min = 0;
int n = 0;
if (!start_of_served_descs_stats_interval)
return NULL;
size = digestmap_size(served_descs);
if (size == 0)
return NULL;
if (size > 0) {
vals = tor_malloc(size * sizeof(int));
for (iter = digestmap_iter_init(served_descs); !digestmap_iter_done(iter);
for (iter = digestmap_iter_init(served_descs);
!digestmap_iter_done(iter);
iter = digestmap_iter_next(served_descs, iter)) {
uintptr_t count;
digestmap_iter_get(iter, &key, &val);
@ -2669,6 +2668,13 @@ rep_hist_format_desc_stats(time_t now)
vals[n++] = (int)count;
(void)key;
}
max = find_nth_int(vals, size, size-1);
q3 = find_nth_int(vals, size, (3*size-1)/4);
md = find_nth_int(vals, size, (size-1)/2);
q1 = find_nth_int(vals, size, (size-1)/4);
min = find_nth_int(vals, size, 0);
tor_free(vals);
}
format_iso_time(t, now);
@ -2678,14 +2684,8 @@ rep_hist_format_desc_stats(time_t now)
t,
(unsigned) (now - start_of_served_descs_stats_interval),
total_descriptor_downloads,
size,
find_nth_int(vals, size, size-1),
find_nth_int(vals, size, (3*size-1)/4),
find_nth_int(vals, size, (size-1)/2),
find_nth_int(vals, size, (size-1)/4),
find_nth_int(vals, size, 0));
size, max, q3, md, q1, min);
tor_free(vals);
return result;
}