X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fevent.c;h=095e7c33df25d369c8a7d241b970c0286554ac6a;hb=37cca72e6c973b77b5d11dcf721ae050edc23586;hp=0dde994f0ff160c0b3e2350fce1b2d9880e08c39;hpb=75c619e372f02f8225d158fd514f01bd04857d3b;p=tinc diff --git a/src/event.c b/src/event.c index 0dde994f..095e7c33 100644 --- a/src/event.c +++ b/src/event.c @@ -52,13 +52,8 @@ static int timeout_compare(const timeout_t *a, const timeout_t *b) { return 0; } -static int signal_compare(const signal_t *a, const signal_t *b) { - return a->signum - b->signum; -} - static splay_tree_t io_tree = {.compare = (splay_compare_t)io_compare}; static splay_tree_t timeout_tree = {.compare = (splay_compare_t)timeout_compare}; -static splay_tree_t signal_tree = {.compare = (splay_compare_t)signal_compare}; void io_add(io_t *io, io_cb_t cb, void *data, int fd, int flags) { if(io->cb) @@ -130,8 +125,13 @@ void timeout_del(timeout_t *timeout) { } #ifndef HAVE_MINGW +static int signal_compare(const signal_t *a, const signal_t *b) { + return a->signum - b->signum; +} + static io_t signalio; static int pipefd[2] = {-1, -1}; +static splay_tree_t signal_tree = {.compare = (splay_compare_t)signal_compare}; static void signal_handler(int signum) { unsigned char num = signum; @@ -245,6 +245,12 @@ bool event_loop(void) { return true; } +void event_flush_output(void) { + for splay_each(io_t, io, &io_tree) + if(FD_ISSET(io->fd, &writefds)) + io->cb(io->data, IO_WRITE); +} + void event_exit(void) { running = false; }