mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Refactor geoip_get_dirreq_history to use buf_t
This commit is contained in:
parent
3b30015143
commit
8993159f3d
@ -30,6 +30,7 @@
|
||||
#define GEOIP_PRIVATE
|
||||
#include "or.h"
|
||||
#include "ht.h"
|
||||
#include "buffers.h"
|
||||
#include "config.h"
|
||||
#include "control.h"
|
||||
#include "dnsserv.h"
|
||||
@ -930,9 +931,9 @@ static char *
|
||||
geoip_get_dirreq_history(dirreq_type_t type)
|
||||
{
|
||||
char *result = NULL;
|
||||
buf_t *buf = NULL;
|
||||
smartlist_t *dirreq_completed = NULL;
|
||||
uint32_t complete = 0, timeouts = 0, running = 0;
|
||||
int bufsize = 1024, written;
|
||||
dirreq_map_entry_t **ptr, **next;
|
||||
struct timeval now;
|
||||
|
||||
@ -965,13 +966,9 @@ geoip_get_dirreq_history(dirreq_type_t type)
|
||||
DIR_REQ_GRANULARITY);
|
||||
running = round_uint32_to_next_multiple_of(running,
|
||||
DIR_REQ_GRANULARITY);
|
||||
result = tor_malloc_zero(bufsize);
|
||||
written = tor_snprintf(result, bufsize, "complete=%u,timeout=%u,"
|
||||
"running=%u", complete, timeouts, running);
|
||||
if (written < 0) {
|
||||
tor_free(result);
|
||||
goto done;
|
||||
}
|
||||
buf = buf_new_with_capacity(1024);
|
||||
buf_add_printf(buf, "complete=%u,timeout=%u,"
|
||||
"running=%u", complete, timeouts, running);
|
||||
|
||||
#define MIN_DIR_REQ_RESPONSES 16
|
||||
if (complete >= MIN_DIR_REQ_RESPONSES) {
|
||||
@ -992,7 +989,7 @@ geoip_get_dirreq_history(dirreq_type_t type)
|
||||
dltimes[ent_sl_idx] = bytes_per_second;
|
||||
} SMARTLIST_FOREACH_END(ent);
|
||||
median_uint32(dltimes, complete); /* sorts as a side effect. */
|
||||
written = tor_snprintf(result + written, bufsize - written,
|
||||
buf_add_printf(buf,
|
||||
",min=%u,d1=%u,d2=%u,q1=%u,d3=%u,d4=%u,md=%u,"
|
||||
"d6=%u,d7=%u,q3=%u,d8=%u,d9=%u,max=%u",
|
||||
dltimes[0],
|
||||
@ -1008,14 +1005,15 @@ geoip_get_dirreq_history(dirreq_type_t type)
|
||||
dltimes[8*complete/10-1],
|
||||
dltimes[9*complete/10-1],
|
||||
dltimes[complete-1]);
|
||||
if (written<0)
|
||||
tor_free(result);
|
||||
tor_free(dltimes);
|
||||
}
|
||||
done:
|
||||
|
||||
result = buf_extract(buf, NULL);
|
||||
|
||||
SMARTLIST_FOREACH(dirreq_completed, dirreq_map_entry_t *, ent,
|
||||
tor_free(ent));
|
||||
smartlist_free(dirreq_completed);
|
||||
buf_free(buf);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user