From 47e95602c45876a470430b85f98fddeb4e3ebe39 Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Mon, 11 Jul 2022 12:24:49 -0400 Subject: [PATCH] stream: uv__drain() always needs to stop POLLOUT (#3675) Regression caused by 1a91b51976a1adc6972081faa78b6b70022254d3 mistake. Refs: https://github.com/libuv/libuv/pull/3648 Fixes: https://github.com/libuv/libuv/pull/3648/3671 --- src/unix/stream.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/unix/stream.c b/src/unix/stream.c index b0887880..b1f6359e 100644 --- a/src/unix/stream.c +++ b/src/unix/stream.c @@ -659,18 +659,18 @@ static void uv__drain(uv_stream_t* stream) { uv_shutdown_t* req; int err; - if (!(stream->flags & UV_HANDLE_SHUTTING)) - return; - assert(QUEUE_EMPTY(&stream->write_queue)); - req = stream->shutdown_req; - assert(req); - if (!(stream->flags & UV_HANDLE_CLOSING)) { uv__io_stop(stream->loop, &stream->io_watcher, POLLOUT); uv__stream_osx_interrupt_select(stream); } + if (!(stream->flags & UV_HANDLE_SHUTTING)) + return; + + req = stream->shutdown_req; + assert(req); + if ((stream->flags & UV_HANDLE_CLOSING) || !(stream->flags & UV_HANDLE_SHUT)) { stream->shutdown_req = NULL;