mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Merge remote-tracking branch 'origin/maint-0.2.2'
Conflicts: src/or/rephist.c
This commit is contained in:
commit
99c2bfe76b
@ -382,7 +382,7 @@ logv(int severity, log_domain_mask_t domain, const char *funcname,
|
||||
continue;
|
||||
} else if (lf->callback) {
|
||||
if (domain & LD_NOCB) {
|
||||
if (!callbacks_deferred) {
|
||||
if (!callbacks_deferred && pending_cb_messages) {
|
||||
pending_cb_message_t *msg = tor_malloc(sizeof(pending_cb_message_t));
|
||||
msg->severity = severity;
|
||||
msg->domain = domain;
|
||||
@ -531,9 +531,12 @@ void
|
||||
logs_free_all(void)
|
||||
{
|
||||
logfile_t *victim, *next;
|
||||
smartlist_t *messages;
|
||||
LOCK_LOGS();
|
||||
next = logfiles;
|
||||
logfiles = NULL;
|
||||
messages = pending_cb_messages;
|
||||
pending_cb_messages = NULL;
|
||||
UNLOCK_LOGS();
|
||||
while (next) {
|
||||
victim = next;
|
||||
@ -543,6 +546,12 @@ logs_free_all(void)
|
||||
}
|
||||
tor_free(appname);
|
||||
|
||||
SMARTLIST_FOREACH(messages, pending_cb_message_t *, msg, {
|
||||
tor_free(msg->msg);
|
||||
tor_free(msg);
|
||||
});
|
||||
smartlist_free(messages);
|
||||
|
||||
/* We _could_ destroy the log mutex here, but that would screw up any logs
|
||||
* that happened between here and the end of execution. */
|
||||
}
|
||||
|
@ -2320,13 +2320,19 @@ rep_hist_buffer_stats_init(time_t now)
|
||||
start_of_buffer_stats_interval = now;
|
||||
}
|
||||
|
||||
/** Statistics from a single circuit. Collected when the circuit closes, or
|
||||
* when we flush statistics to disk. */
|
||||
typedef struct circ_buffer_stats_t {
|
||||
uint32_t processed_cells;
|
||||
/** Average number of cells in the circuit's queue */
|
||||
double mean_num_cells_in_queue;
|
||||
/** Average time a cell waits in the queue. */
|
||||
double mean_time_cells_in_queue;
|
||||
/** Total number of cells sent over this circuit */
|
||||
uint32_t processed_cells;
|
||||
} circ_buffer_stats_t;
|
||||
|
||||
smartlist_t *circuits_for_buffer_stats = NULL;
|
||||
/** List of circ_buffer_stats_t. */
|
||||
static smartlist_t *circuits_for_buffer_stats = NULL;
|
||||
|
||||
/** Remember cell statistics for circuit <b>circ</b> at time
|
||||
* <b>end_of_interval</b> and reset cell counters in case the circuit
|
||||
@ -2350,6 +2356,8 @@ rep_hist_buffer_stats_add_circ(circuit_t *circ, time_t end_of_interval)
|
||||
circ->timestamp_created.tv_sec :
|
||||
start_of_buffer_stats_interval;
|
||||
interval_length = (int) (end_of_interval - start_of_interval);
|
||||
if (interval_length <= 0)
|
||||
return;
|
||||
stat = tor_malloc_zero(sizeof(circ_buffer_stats_t));
|
||||
stat->processed_cells = orcirc->processed_cells;
|
||||
/* 1000.0 for s -> ms; 2.0 because of app-ward and exit-ward queues */
|
||||
@ -2749,5 +2757,12 @@ rep_hist_free_all(void)
|
||||
built_last_stability_doc_at = 0;
|
||||
predicted_ports_free();
|
||||
bidi_map_free();
|
||||
|
||||
if (circuits_for_buffer_stats) {
|
||||
SMARTLIST_FOREACH(circuits_for_buffer_stats, circ_buffer_stats_t *, s,
|
||||
tor_free(s));
|
||||
smartlist_free(circuits_for_buffer_stats);
|
||||
circuits_for_buffer_stats = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user