From: Stephan Bosch Date: Wed, 29 Apr 2020 15:45:21 +0000 (+0200) Subject: lib-http: http-server-connection - Fix result of http_server_connection_next_response(). X-Git-Tag: 2.3.11.2~119 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0ab9fa7f2b75954c795f67c1d1685d51f2ca8efa;p=thirdparty%2Fdovecot%2Fcore.git lib-http: http-server-connection - Fix result of http_server_connection_next_response(). Return _OUTPUT_BLOCKED only when the output fd is blocked. --- 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