From: Stephan Bosch Date: Mon, 11 Nov 2019 16:45:35 +0000 (+0100) Subject: lib-http: http-server-response - Add response reference counting API. X-Git-Tag: 2.3.11.2~265 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2fd6708b4a892e7c34107192d3f8c2264d4c0afe;p=thirdparty%2Fdovecot%2Fcore.git lib-http: http-server-response - Add response reference counting API. Uses request reference counting internally. This is just a convenience API. --- diff --git a/src/lib-http/http-server-response.c b/src/lib-http/http-server-response.c index aed59a40ec..76c5387b44 100644 --- a/src/lib-http/http-server-response.c +++ b/src/lib-http/http-server-response.c @@ -97,6 +97,24 @@ void http_server_response_request_destroy(struct http_server_response *resp) e_debug(resp->event, "Destroy"); } +void http_server_response_ref(struct http_server_response *resp) +{ + http_server_request_ref(resp->request); +} + +bool http_server_response_unref(struct http_server_response **_resp) +{ + struct http_server_response *resp = *_resp; + struct http_server_request *req; + + *_resp = NULL; + if (resp == NULL) + return FALSE; + + req = resp->request; + return http_server_request_unref(&req); +} + void http_server_response_add_header(struct http_server_response *resp, const char *key, const char *value) { diff --git a/src/lib-http/http-server.h b/src/lib-http/http-server.h index bbd33a5535..89e64c94fb 100644 --- a/src/lib-http/http-server.h +++ b/src/lib-http/http-server.h @@ -71,6 +71,12 @@ struct http_server_response * http_server_response_create(struct http_server_request *req, unsigned int status, const char *reason); +/* Reference a server response */ +void http_server_response_ref(struct http_server_response *resp); +/* Unreference a server response. Returns TRUE if there are still more + references, FALSE if not. */ +bool http_server_response_unref(struct http_server_response **_resp); + /* Add a custom header to the response. This can override headers that are otherwise created implicitly. */ void http_server_response_add_header(struct http_server_response *resp,