]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: http-server-connection - Fix result of http_server_connection_next_response().
authorStephan Bosch <stephan.bosch@open-xchange.com>
Wed, 29 Apr 2020 15:45:21 +0000 (17:45 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Tue, 5 May 2020 06:17:30 +0000 (06:17 +0000)
Return _OUTPUT_BLOCKED only when the output fd is blocked.

src/lib-http/http-server-connection.c

index 86536a30f18f10a4084c45f514a8a2181aef9801..e5bbad0e9e313bae430347173e03a4fb48e4f44b 100644 (file)
@@ -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