From d7d2c22750b6b03664f0fe8b0b2f9071b3f9448b Mon Sep 17 00:00:00 2001 From: ronen37 <78022679+ronen37@users.noreply.github.com> Date: Tue, 26 Jan 2021 13:40:36 +0200 Subject: [PATCH] Fix checking if we actively drain backpressure (#1179) in WebSocketContext::us_socket_context_on_writable() --- src/WebSocketContext.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/WebSocketContext.h b/src/WebSocketContext.h index 8861429..8cebb37 100644 --- a/src/WebSocketContext.h +++ b/src/WebSocketContext.h @@ -322,8 +322,8 @@ private: asyncSocket->write(nullptr, 0); /* Behavior: if we actively drain backpressure, always reset timeout (even if we are in shutdown) */ - /* Also emit drain event if we came here with 0 backpressure */ - if (!backpressure || backpressure < asyncSocket->getBufferedAmount()) { + /* Also reset timeout if we came here with 0 backpressure */ + if (!backpressure || backpressure > asyncSocket->getBufferedAmount()) { auto *webSocketContextData = (WebSocketContextData *) us_socket_context_ext(SSL, us_socket_context(SSL, (us_socket_t *) s)); asyncSocket->timeout(webSocketContextData->idleTimeout); } @@ -336,7 +336,7 @@ private: asyncSocket->shutdown(); } } else if (!backpressure || backpressure > asyncSocket->getBufferedAmount()) { - /* Only call drain if we actually drained backpressure */ + /* Only call drain if we actually drained backpressure or if we came here with 0 backpressure */ auto *webSocketContextData = (WebSocketContextData *) us_socket_context_ext(SSL, us_socket_context(SSL, (us_socket_t *) s)); if (webSocketContextData->drainHandler) { webSocketContextData->drainHandler((WebSocket *) s);