Skip to content
Snippets Groups Projects
Commit 009453f9 authored by Nick Mathewson's avatar Nick Mathewson :game_die:
Browse files

Merge remote-tracking branch 'linus/task-5891'

parents ee1b8196 ad61282f
No related branches found
No related tags found
No related merge requests found
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 bug 5891. Also fixes bug 5508 in a better way.
...@@ -2650,24 +2650,30 @@ rep_hist_format_desc_stats(time_t now) ...@@ -2650,24 +2650,30 @@ rep_hist_format_desc_stats(time_t now)
const char *key; const char *key;
void *val; void *val;
unsigned size; unsigned size;
int *vals; int *vals, max = 0, q3 = 0, md = 0, q1 = 0, min = 0;
int n = 0; int n = 0;
if (!start_of_served_descs_stats_interval) if (!start_of_served_descs_stats_interval)
return NULL; return NULL;
size = digestmap_size(served_descs); size = digestmap_size(served_descs);
if (size == 0) if (size > 0) {
return NULL; vals = tor_malloc(size * sizeof(int));
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)) {
iter = digestmap_iter_next(served_descs, iter) ) { uintptr_t count;
uintptr_t count; digestmap_iter_get(iter, &key, &val);
digestmap_iter_get(iter, &key, &val); count = (uintptr_t)val;
count = (uintptr_t)val; vals[n++] = (int)count;
vals[n++] = (int)count; (void)key;
(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); format_iso_time(t, now);
...@@ -2678,14 +2684,8 @@ rep_hist_format_desc_stats(time_t now) ...@@ -2678,14 +2684,8 @@ rep_hist_format_desc_stats(time_t now)
t, t,
(unsigned) (now - start_of_served_descs_stats_interval), (unsigned) (now - start_of_served_descs_stats_interval),
total_descriptor_downloads, total_descriptor_downloads,
size, size, max, q3, md, q1, min);
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));
tor_free(vals);
return result; return result;
} }
...@@ -2705,6 +2705,7 @@ rep_hist_desc_stats_write(time_t now) ...@@ -2705,6 +2705,7 @@ rep_hist_desc_stats_write(time_t now)
return start_of_served_descs_stats_interval + WRITE_STATS_INTERVAL; return start_of_served_descs_stats_interval + WRITE_STATS_INTERVAL;
str = rep_hist_format_desc_stats(now); str = rep_hist_format_desc_stats(now);
tor_assert(str != NULL);
statsdir = get_datadir_fname("stats"); statsdir = get_datadir_fname("stats");
if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0) { if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment