X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fevent.c;h=fdbf11d151bcb2e73d484d2ca790f749790cd6c6;hb=d9c70767aa6da8b62b4a1034d5f07892603beddd;hp=6827dc048c4b6135a1fa42fbabd1bce63af22406;hpb=6bc5d626a8726fc23365ee705761a3c666a08ad4;p=tinc diff --git a/src/event.c b/src/event.c index 6827dc04..fdbf11d1 100644 --- a/src/event.c +++ b/src/event.c @@ -36,7 +36,7 @@ static int io_compare(const io_t *a, const io_t *b) { static int timeout_compare(const timeout_t *a, const timeout_t *b) { struct timeval diff; timersub(&a->tv, &b->tv, &diff); - return diff.tv_sec ?: diff.tv_usec; + return diff.tv_sec ?: diff.tv_usec ?: a < b ? -1 : a > b ? 1 : 0; } static int signal_compare(const signal_t *a, const signal_t *b) { @@ -182,7 +182,7 @@ bool event_loop(void) { timeout_t *timeout = timeout_tree.head->data; timersub(&timeout->tv, &now, &diff); - if(diff.tv_sec <= 0) { + if(diff.tv_sec < 0) { timeout->cb(timeout->data); if(timercmp(&timeout->tv, &now, <)) timeout_del(timeout);