X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fevent.c;h=11f1ed817003138cf4b2a7e4a3b7e45f341e8a12;hb=57f6341e91373198ad2a4099015f2988795d8a3f;hp=f72529efd133843f51b78a9fe89592f45d726311;hpb=0f19bd98e1a95ab45d0ed46d79a07502b65a4c95;p=meshlink diff --git a/src/event.c b/src/event.c index f72529ef..11f1ed81 100644 --- a/src/event.c +++ b/src/event.c @@ -71,7 +71,9 @@ void io_add(event_loop_t *loop, io_t *io, io_cb_t cb, void *data, int fd, int fl io_set(loop, io, flags); - assert(splay_insert_node(&loop->ios, &io->node)); + splay_node_t *node = splay_insert_node(&loop->ios, &io->node); + assert(node); + (void)node; } void io_set(event_loop_t *loop, io_t *io, int flags) { @@ -169,6 +171,7 @@ static void signalio_handler(event_loop_t *loop, void *data, int flags) { }); if(sig) { + sig->set = false; sig->cb(loop, sig->data); } } @@ -193,7 +196,12 @@ static void pipe_exit(event_loop_t *loop) { } void signal_trigger(event_loop_t *loop, signal_t *sig) { + if(sig->set) { + return; + } + uint8_t signum = sig->signum; + sig->set = true; write(loop->pipefd[1], &signum, 1); return; } @@ -204,6 +212,7 @@ void signal_add(event_loop_t *loop, signal_t *sig, signal_cb_t cb, void *data, u sig->cb = cb; sig->data = data; sig->signum = signum; + sig->set = false; sig->node.data = sig; if(loop->pipefd[0] == -1) {