From 4539bc6fae1f932db873ee50e119248a22fa2cfa Mon Sep 17 00:00:00 2001 From: Richard Nyberg Date: Mon, 9 Feb 2009 16:46:04 +0100 Subject: [PATCH] Run timeouts that will expire in less than one millisecond. The timeouts for poll and epoll are given in milliseconds, which caused busy looping in the event loop for timeouts with less time remaining. --- evloop/timer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evloop/timer.c b/evloop/timer.c index 13fb5e8..c14eaab 100644 --- a/evloop/timer.c +++ b/evloop/timer.c @@ -106,7 +106,7 @@ evtimers_run(void) evtimer_gettime(&now); while (timeheap_size() > 0) { struct timespec diff = subtime(timeheap_top(), now); - if (diff.tv_sec < 0) { + if (diff.tv_sec < 0 || (diff.tv_sec == 0 && diff.tv_nsec < 1000000)) { struct timeout *t = timeheap_remove_top(); t->th.i = -1; t->cb(-1, EV_TIMEOUT, t->arg);