From da9505598c515f42fa56e4fd4ac432d1b32cc565 Mon Sep 17 00:00:00 2001 From: "Evgeny Grin (Karlson2k)" Date: Sat, 2 Dec 2023 22:48:17 +0300 Subject: [PATCH] Fixed epoll processing of "Upgraded" connections broken by 38599d9fab185d2673674ac3b109f73d284e7127 --- src/microhttpd/daemon.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c index 1dc2a3bd..b758882a 100644 --- a/src/microhttpd/daemon.c +++ b/src/microhttpd/daemon.c @@ -5334,11 +5334,14 @@ is_urh_ready (struct MHD_UpgradeResponseHandle *const urh) return false; if (connection->daemon->shutdown) return true; - if ( ( (0 != (MHD_EPOLL_STATE_READ_READY & urh->app.celi)) || + if ( ( (0 != ((MHD_EPOLL_STATE_READ_READY | MHD_EPOLL_STATE_ERROR) + & urh->app.celi)) || (connection->tls_read_ready) ) && (urh->in_buffer_used < urh->in_buffer_size) ) return true; - if ( (0 != (MHD_EPOLL_STATE_READ_READY & urh->mhd.celi)) && + if ( ( (0 != ((MHD_EPOLL_STATE_READ_READY | MHD_EPOLL_STATE_ERROR) + & urh->mhd.celi)) || + urh->was_closed) && (urh->out_buffer_used < urh->out_buffer_size) ) return true; if ( (0 != (MHD_EPOLL_STATE_WRITE_READY & urh->app.celi)) &&