From 8dcb3349c7f7970cb23eb3c12104fa02a6f2abd7 Mon Sep 17 00:00:00 2001 From: Vincent Wei Date: Mon, 21 Sep 2020 08:33:34 +0800 Subject: [PATCH] always check expired timers even got EINTR --- src/server/server.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/server/server.c b/src/server/server.c index ec96c1d6..c2590611 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -403,8 +403,16 @@ BOOL server_IdleHandler4Server (PMSGQUEUE msg_queue, BOOL wait) /* It is time to check event again. */ if (errno == EINTR) { - if (wait) + if (wait) { ParseEvent (msg_queue, 0); + + /* Since 5.0.3: Always check timers */ + nevts += __mg_check_expired_timers (msg_queue, + SHAREDRES_TIMER_COUNTER - msg_queue->old_tick_count); + msg_queue->old_tick_count = SHAREDRES_TIMER_COUNTER; + return (nevts > 0); + } + return FALSE; } #ifdef _DEBUG