]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: http-server-connection - Hold immune request reference while sending response.
authorStephan Bosch <stephan.bosch@open-xchange.com>
Fri, 13 Mar 2020 23:57:48 +0000 (00:57 +0100)
committermartti.rannanjarvi <martti.rannanjarvi@open-xchange.com>
Sat, 18 Apr 2020 14:55:11 +0000 (14:55 +0000)
src/lib-http/http-server-connection.c

index 9e588201f542d636bf544adb8ee8a2e8793d0c38..842b28c64ec35fecdb44baa2c860b2bc7e39df8c 100644 (file)
@@ -871,9 +871,9 @@ http_server_connection_next_response(struct http_server_connection *conn)
        e_debug(conn->event, "Sending response");
        http_server_connection_start_idle_timeout(conn);
 
-       http_server_request_ref(req);
+       http_server_request_immune_ref(req);
        ret = http_server_response_send(req->response);
-       http_server_request_unref(&req);
+       http_server_request_immune_unref(&req);
 
        if (ret < 0)
                return FALSE;
@@ -936,10 +936,13 @@ int http_server_connection_output(struct http_server_connection *conn)
                struct http_server_request *req = conn->request_queue_head;
                struct http_server_response *resp = req->response;
 
+               i_assert(resp != NULL);
+
                http_server_connection_ref(conn);
 
-               i_assert(resp != NULL);
+               http_server_request_immune_ref(req);
                ret = http_server_response_send_more(resp);
+               http_server_request_immune_unref(&req);
 
                if (http_server_connection_unref_is_closed(conn) || ret < 0)
                        return -1;