Loading src/or/main.c +52 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ #include "nodelist.h" #include "ntmain.h" #include "onion.h" #include "periodic.h" #include "policies.h" #include "transports.h" #include "relay.h" Loading Loading @@ -1227,6 +1228,13 @@ get_signewnym_epoch(void) return newnym_epoch; } /** DOCDOC */ static int periodic_events_initialized = 0; static periodic_event_item_t periodic_events[] = { END_OF_PERIODIC_EVENTS }; typedef struct { time_t last_rotated_x509_certificate; time_t check_v3_certificate; Loading Loading @@ -1267,7 +1275,46 @@ static time_to_t time_to = { void reset_all_main_loop_timers(void) { int i; memset(&time_to, 0, sizeof(time_to)); for (i = 0; periodic_events[i].name; ++i) { periodic_event_reschedule(&periodic_events[i]); } } /** DOCDOC */ static void initialize_periodic_events_cb(evutil_socket_t fd, short events, void *data) { (void) fd; (void) events; (void) data; int i; for (i = 0; periodic_events[i].name; ++i) { periodic_event_launch(&periodic_events[i]); } } /** DOCDOC */ static void initialize_periodic_events(void) { tor_assert(periodic_events_initialized == 0); periodic_events_initialized = 1; struct timeval one_second = { 1, 0 }; event_base_once(tor_libevent_get_base(), -1, 0, initialize_periodic_events_cb, NULL, &one_second); } static void teardown_periodic_events(void) { int i; for (i = 0; periodic_events[i].name; ++i) { periodic_event_destroy(&periodic_events[i]); } } /** Loading Loading @@ -2144,6 +2191,10 @@ do_main_loop(void) tor_assert(second_timer); } if (! periodic_events_initialized) { initialize_periodic_events(); } #ifdef HAVE_SYSTEMD_209 uint64_t watchdog_delay; /* set up systemd watchdog notification. */ Loading Loading @@ -2852,6 +2903,7 @@ tor_free_all(int postfork) smartlist_free(closeable_connection_lst); smartlist_free(active_linked_connection_lst); periodic_timer_free(second_timer); teardown_periodic_events(); #ifndef USE_BUFFEREVENTS periodic_timer_free(refill_timer); #endif Loading src/or/periodic.h +1 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ typedef struct periodic_event_item_t { /** events will get their interval from first execution */ #define PERIODIC_EVENT(fn) { fn##_callback, 0, 0, NULL, #fn } #define END_OF_PERIODIC_EVENTS { NULL, 0, 0, NULL, NULL } #if 0 /** Refactor test, check the last_action_time was now or (now - delta - 1) Loading Loading
src/or/main.c +52 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ #include "nodelist.h" #include "ntmain.h" #include "onion.h" #include "periodic.h" #include "policies.h" #include "transports.h" #include "relay.h" Loading Loading @@ -1227,6 +1228,13 @@ get_signewnym_epoch(void) return newnym_epoch; } /** DOCDOC */ static int periodic_events_initialized = 0; static periodic_event_item_t periodic_events[] = { END_OF_PERIODIC_EVENTS }; typedef struct { time_t last_rotated_x509_certificate; time_t check_v3_certificate; Loading Loading @@ -1267,7 +1275,46 @@ static time_to_t time_to = { void reset_all_main_loop_timers(void) { int i; memset(&time_to, 0, sizeof(time_to)); for (i = 0; periodic_events[i].name; ++i) { periodic_event_reschedule(&periodic_events[i]); } } /** DOCDOC */ static void initialize_periodic_events_cb(evutil_socket_t fd, short events, void *data) { (void) fd; (void) events; (void) data; int i; for (i = 0; periodic_events[i].name; ++i) { periodic_event_launch(&periodic_events[i]); } } /** DOCDOC */ static void initialize_periodic_events(void) { tor_assert(periodic_events_initialized == 0); periodic_events_initialized = 1; struct timeval one_second = { 1, 0 }; event_base_once(tor_libevent_get_base(), -1, 0, initialize_periodic_events_cb, NULL, &one_second); } static void teardown_periodic_events(void) { int i; for (i = 0; periodic_events[i].name; ++i) { periodic_event_destroy(&periodic_events[i]); } } /** Loading Loading @@ -2144,6 +2191,10 @@ do_main_loop(void) tor_assert(second_timer); } if (! periodic_events_initialized) { initialize_periodic_events(); } #ifdef HAVE_SYSTEMD_209 uint64_t watchdog_delay; /* set up systemd watchdog notification. */ Loading Loading @@ -2852,6 +2903,7 @@ tor_free_all(int postfork) smartlist_free(closeable_connection_lst); smartlist_free(active_linked_connection_lst); periodic_timer_free(second_timer); teardown_periodic_events(); #ifndef USE_BUFFEREVENTS periodic_timer_free(refill_timer); #endif Loading
src/or/periodic.h +1 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ typedef struct periodic_event_item_t { /** events will get their interval from first execution */ #define PERIODIC_EVENT(fn) { fn##_callback, 0, 0, NULL, #fn } #define END_OF_PERIODIC_EVENTS { NULL, 0, 0, NULL, NULL } #if 0 /** Refactor test, check the last_action_time was now or (now - delta - 1) Loading