X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fevent.c;h=095e7c33df25d369c8a7d241b970c0286554ac6a;hb=f9ab8e266b93aa3be772374ef4a8fdb06e376568;hp=44a1f878a55a392a299c46f9efe115bb02f68fc6;hpb=76816e119b7d38a14823d430aafeff362dfbfd41;p=tinc diff --git a/src/event.c b/src/event.c index 44a1f878..095e7c33 100644 --- a/src/event.c +++ b/src/event.c @@ -19,6 +19,7 @@ #include "system.h" +#include "dropin.h" #include "event.h" #include "net.h" #include "utils.h" @@ -51,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) @@ -129,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; @@ -244,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; }