From: Stephan Bosch Date: Fri, 13 Mar 2020 23:57:48 +0000 (+0100) Subject: lib-http: http-server-connection - Hold immune request reference while sending response. X-Git-Tag: 2.3.11.2~257 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c55416a31f661cc53ab5de77806c650cc1670a33;p=thirdparty%2Fdovecot%2Fcore.git lib-http: http-server-connection - Hold immune request reference while sending response. --- diff --git a/src/lib-http/http-server-connection.c b/src/lib-http/http-server-connection.c index 9e588201f5..842b28c64e 100644 --- a/src/lib-http/http-server-connection.c +++ b/src/lib-http/http-server-connection.c @@ -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;