From: Stephan Bosch Date: Sat, 20 Feb 2016 17:35:12 +0000 (+0200) Subject: lib-http: server: Implicitly free a request response structure when a new (failure... X-Git-Tag: 2.2.22.rc1~138 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c0a8031392ccb2cbfafe3eb0a1446fa8d8c5bb46;p=thirdparty%2Fdovecot%2Fcore.git lib-http: server: Implicitly free a request response structure when a new (failure) response is started. --- diff --git a/src/lib-http/http-server-response.c b/src/lib-http/http-server-response.c index 2fa863753f..ce8e19d7cd 100644 --- a/src/lib-http/http-server-response.c +++ b/src/lib-http/http-server-response.c @@ -49,9 +49,19 @@ http_server_response_create(struct http_server_request *req, { struct http_server_response *resp; - i_assert(req->response == NULL); + if (req->response == NULL) { + resp = req->response = p_new + (req->pool, struct http_server_response, 1); + } else { + /* was already composing a response, but decided to + start a new one (would usually be a failure response) + */ + resp = req->response; + i_assert(!resp->submitted); + http_server_response_free(resp); + memset(resp, 0, sizeof(*resp)); + } - resp = req->response = p_new(req->pool, struct http_server_response, 1); resp->request = req; resp->status = status; resp->reason = p_strdup(req->pool, reason);