diff --git a/src/unix/core.c b/src/unix/core.c index a2c07e6a..e8e256d9 100644 --- a/src/unix/core.c +++ b/src/unix/core.c @@ -301,7 +301,7 @@ int uv_backend_timeout(const uv_loop_t* loop) { if (loop->stop_flag != 0) return 0; - if (!uv__has_active_handles(loop) && !uv__has_active_reqs(loop)) + if (!uv_loop_alive(loop)) return 0; if (!QUEUE_EMPTY(&loop->idle_handles)) @@ -310,9 +310,6 @@ int uv_backend_timeout(const uv_loop_t* loop) { if (!QUEUE_EMPTY(&loop->pending_queue)) return 0; - if (loop->closing_handles) - return 0; - return uv__next_timeout(loop); } diff --git a/src/win/core.c b/src/win/core.c index e84186d4..d9c57a42 100644 --- a/src/win/core.c +++ b/src/win/core.c @@ -336,15 +336,12 @@ int uv_backend_timeout(const uv_loop_t* loop) { if (loop->stop_flag != 0) return 0; - if (!uv__has_active_handles(loop) && !uv__has_active_reqs(loop)) + if (!uv_loop_alive(loop)) return 0; if (loop->pending_reqs_tail) return 0; - if (loop->endgame_handles) - return 0; - if (loop->idle_handles) return 0; @@ -463,8 +460,8 @@ static void uv_poll_ex(uv_loop_t* loop, DWORD timeout) { static int uv__loop_alive(const uv_loop_t* loop) { - return loop->active_handles > 0 || - !QUEUE_EMPTY(&loop->active_reqs) || + return uv__has_active_handles(loop) || + uv__has_active_reqs(loop) || loop->endgame_handles != NULL; }