[MEDIUM] pollers: don't wait if a signal is pending
If an asynchronous signal is received outside of the poller, we don't
want the poller to wait for a timeout to occur before processing it,
so we set its timeout to zero, just like we do with pending tasks in
the run queue.
diff --git a/src/ev_kqueue.c b/src/ev_kqueue.c
index f520106..7e626d1 100644
--- a/src/ev_kqueue.c
+++ b/src/ev_kqueue.c
@@ -30,6 +30,7 @@
#include <types/global.h>
#include <proto/fd.h>
+#include <proto/signal.h>
#include <proto/task.h>
/* private data */
@@ -109,7 +110,7 @@
timeout.tv_sec = 0;
timeout.tv_nsec = 0;
- if (!run_queue) {
+ if (!run_queue && !signal_queue_len) {
if (!exp) {
delta_ms = MAX_DELAY_MS;
timeout.tv_sec = (MAX_DELAY_MS / 1000);