From 0ab9fa7f2b75954c795f67c1d1685d51f2ca8efa Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Wed, 29 Apr 2020 17:45:21 +0200 Subject: [PATCH] lib-http: http-server-connection - Fix result of http_server_connection_next_response(). Return _OUTPUT_BLOCKED only when the output fd is blocked. --- src/lib-http/http-server-connection.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib-http/http-server-connection.c b/src/lib-http/http-server-connection.c index 86536a30f1..e5bbad0e9e 100644 --- a/src/lib-http/http-server-connection.c +++ b/src/lib-http/http-server-connection.c @@ -741,7 +741,7 @@ http_server_connection_next_response(struct http_server_connection *conn) int ret; if (conn->output_locked) - return _OUTPUT_BLOCKED; + return _OUTPUT_FINISHED; req = conn->request_queue_head; if (req == NULL || req->state == HTTP_SERVER_REQUEST_STATE_NEW) { @@ -799,7 +799,11 @@ http_server_connection_next_response(struct http_server_connection *conn) return _OUTPUT_ERROR; http_server_connection_reset_idle_timeout(conn); - return (ret > 0 ? _OUTPUT_AVAILABLE : _OUTPUT_BLOCKED); + if (ret == 0) + return _OUTPUT_BLOCKED; + if (conn->output_locked) + return _OUTPUT_FINISHED; + return _OUTPUT_AVAILABLE; } static int -- 2.47.3