From 903f0b38884375179cea63b9d0821e295c38764a Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 22 Feb 2016 20:58:03 +0200 Subject: [PATCH] lib-http: http_server_request_unref() now always sets *req=NULL This makes its behavior consistent with other APIs in Dovecot. --- src/lib-http/http-server-request.c | 6 +++--- src/lib-http/http-server-response.c | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/lib-http/http-server-request.c b/src/lib-http/http-server-request.c index cdacab4085..43038c078c 100644 --- a/src/lib-http/http-server-request.c +++ b/src/lib-http/http-server-request.c @@ -66,6 +66,8 @@ bool http_server_request_unref(struct http_server_request **_req) struct http_server_connection *conn = req->conn; i_assert(req->refcount > 0); + + *_req = NULL; if (--req->refcount > 0) return TRUE; @@ -84,7 +86,6 @@ bool http_server_request_unref(struct http_server_request **_req) if (req->response != NULL) http_server_response_free(req->response); pool_unref(&req->pool); - *_req = NULL; return FALSE; } @@ -449,8 +450,7 @@ http_server_istream_read(struct istream_private *stream) ret = hsristream->read_status; - http_server_request_unref(&req); - if (req == NULL) + if (!http_server_request_unref(&req)) hsristream->req = NULL; http_server_connection_unref(&conn); } diff --git a/src/lib-http/http-server-response.c b/src/lib-http/http-server-response.c index ce8e19d7cd..539739d809 100644 --- a/src/lib-http/http-server-response.c +++ b/src/lib-http/http-server-response.c @@ -405,8 +405,7 @@ http_server_response_output_payload( /* callback may have messed with our pointer, so unref using local variable */ - http_server_request_unref(&req); - if (req == NULL) + if (!http_server_request_unref(&req)) *_resp = NULL; http_server_connection_unref(&conn); -- 2.47.3