|
@@ -768,10 +768,11 @@ static void run_scheduled_events(time_t now) {
|
|
|
close_closeable_connections();
|
|
|
}
|
|
|
|
|
|
+static struct event *timeout_event = NULL;
|
|
|
+
|
|
|
/** Libevent callback: invoked once every second. */
|
|
|
static void second_elapsed_callback(int fd, short event, void *args)
|
|
|
{
|
|
|
- static struct event *timeout_event = NULL;
|
|
|
static struct timeval one_second;
|
|
|
static long current_second = 0;
|
|
|
struct timeval now;
|
|
@@ -780,7 +781,6 @@ static void second_elapsed_callback(int fd, short event, void *args)
|
|
|
int seconds_elapsed;
|
|
|
or_options_t *options = get_options();
|
|
|
if (!timeout_event) {
|
|
|
- /* XXX NM: We don't free timeout_event on exit. */
|
|
|
timeout_event = tor_malloc_zero(sizeof(struct event));
|
|
|
evtimer_set(timeout_event, second_elapsed_callback, NULL);
|
|
|
one_second.tv_sec = 1;
|
|
@@ -1251,6 +1251,7 @@ void tor_free_all(int postfork)
|
|
|
tor_tls_free_all();
|
|
|
/* stuff in main.c */
|
|
|
smartlist_free(closeable_connection_lst);
|
|
|
+ tor_free(timeout_event);
|
|
|
|
|
|
if (!postfork) {
|
|
|
close_logs(); /* free log strings. do this last so logs keep working. */
|