]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: http_server_request_unref() now always sets *req=NULL
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 22 Feb 2016 18:58:03 +0000 (20:58 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 22 Feb 2016 18:58:03 +0000 (20:58 +0200)
This makes its behavior consistent with other APIs in Dovecot.

src/lib-http/http-server-request.c
src/lib-http/http-server-response.c

index cdacab408524c12275b7873076e2caf842f9fa7f..43038c078c63810bfd2f957ce541018d69a3f6a2 100644 (file)
@@ -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);
        }
index ce8e19d7cd8327516d402cfde9b4a47173cfe67c..539739d809ed8c45e2e0e201046ff48403a5c1a2 100644 (file)
@@ -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);