From 7644d4ef63b8c1db35ed044f86aeeb98acf21fae Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Tue, 20 Mar 2018 18:04:36 +0100 Subject: [PATCH] lib-http: server: Allow resubmitting a response, as long as it is not sent yet. --- src/lib-http/http-server-request.c | 1 + src/lib-http/http-server-response.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib-http/http-server-request.c b/src/lib-http/http-server-request.c index c922bb42d8..597912151a 100644 --- a/src/lib-http/http-server-request.c +++ b/src/lib-http/http-server-request.c @@ -296,6 +296,7 @@ void http_server_request_submit_response(struct http_server_request *req) case HTTP_SERVER_REQUEST_STATE_QUEUED: case HTTP_SERVER_REQUEST_STATE_PAYLOAD_IN: case HTTP_SERVER_REQUEST_STATE_PROCESSING: + case HTTP_SERVER_REQUEST_STATE_SUBMITTED_RESPONSE: if (!http_server_request_is_complete(req)) { http_server_request_debug(req, "Not ready to respond"); req->state = HTTP_SERVER_REQUEST_STATE_SUBMITTED_RESPONSE; diff --git a/src/lib-http/http-server-response.c b/src/lib-http/http-server-response.c index 087e8e555a..4d5424a52c 100644 --- a/src/lib-http/http-server-response.c +++ b/src/lib-http/http-server-response.c @@ -66,6 +66,8 @@ http_server_response_create(struct http_server_request *req, { struct http_server_response *resp; + i_assert(req->state < HTTP_SERVER_REQUEST_STATE_SENT_RESPONSE); + if (req->response == NULL) { resp = req->response = p_new (req->pool, struct http_server_response, 1); @@ -74,7 +76,6 @@ http_server_response_create(struct http_server_request *req, start a new one (would usually be a failure response) */ resp = req->response; - i_assert(!resp->submitted); http_server_response_free(resp); i_zero(resp); } -- 2.47.3