mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Merge branch 'maint-0.3.1'
This commit is contained in:
commit
52c40330c8
@ -29,6 +29,8 @@
|
||||
|
||||
#include "orconfig.h"
|
||||
|
||||
#define TOR_TIMERS_PRIVATE
|
||||
|
||||
#include "compat.h"
|
||||
#include "compat_libevent.h"
|
||||
#include "timers.h"
|
||||
@ -148,6 +150,21 @@ libevent_timer_reschedule(void)
|
||||
event_add(global_timer_event, &d);
|
||||
}
|
||||
|
||||
/** Run the callback of every timer that has expired, based on the current
|
||||
* output of monotime_get(). */
|
||||
STATIC void
|
||||
timers_run_pending(void)
|
||||
{
|
||||
monotime_t now;
|
||||
monotime_get(&now);
|
||||
timer_advance_to_cur_time(&now);
|
||||
|
||||
tor_timer_t *t;
|
||||
while ((t = timeouts_get(global_timeouts))) {
|
||||
t->callback.cb(t, t->callback.arg, &now);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoked when the libevent timer has expired: see which tor_timer_t events
|
||||
* have fired, activate their callbacks, and reschedule the libevent timer.
|
||||
@ -159,14 +176,7 @@ libevent_timer_callback(evutil_socket_t fd, short what, void *arg)
|
||||
(void)what;
|
||||
(void)arg;
|
||||
|
||||
monotime_t now;
|
||||
monotime_get(&now);
|
||||
timer_advance_to_cur_time(&now);
|
||||
|
||||
tor_timer_t *t;
|
||||
while ((t = timeouts_get(global_timeouts))) {
|
||||
t->callback.cb(t, t->callback.arg, &now);
|
||||
}
|
||||
timers_run_pending();
|
||||
|
||||
libevent_timer_reschedule();
|
||||
}
|
||||
|
@ -22,5 +22,9 @@ void timer_free(tor_timer_t *t);
|
||||
void timers_initialize(void);
|
||||
void timers_shutdown(void);
|
||||
|
||||
#ifdef TOR_TIMERS_PRIVATE
|
||||
STATIC void timers_run_pending(void);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user