changeset 19819:c1a959cba67a

lib-http: http_server_request_unref() now always sets *req=NULL This makes its behavior consistent with other APIs in Dovecot.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Mon, 22 Feb 2016 20:58:03 +0200
parents 2cc7c59f1311
children a0e487d9c6f9
files src/lib-http/http-server-request.c src/lib-http/http-server-response.c
diffstat 2 files changed, 4 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-http/http-server-request.c	Mon Feb 22 20:47:37 2016 +0200
+++ b/src/lib-http/http-server-request.c	Mon Feb 22 20:58:03 2016 +0200
@@ -66,6 +66,8 @@
 	struct http_server_connection *conn = req->conn;
 
 	i_assert(req->refcount > 0);
+
+	*_req = NULL;
 	if (--req->refcount > 0)
 		return TRUE;
 
@@ -84,7 +86,6 @@
 	if (req->response != NULL)
 		http_server_response_free(req->response);
 	pool_unref(&req->pool);
-	*_req = NULL;
 	return FALSE;
 }
 
@@ -449,8 +450,7 @@
 
 		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);
 	}
--- a/src/lib-http/http-server-response.c	Mon Feb 22 20:47:37 2016 +0200
+++ b/src/lib-http/http-server-response.c	Mon Feb 22 20:58:03 2016 +0200
@@ -405,8 +405,7 @@
 
 	/* 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);