dovecot-2.2: lib-http server: Made http_server_request_[un]ref()...

dovecot at dovecot.org dovecot at dovecot.org
Tue Aug 5 15:45:36 UTC 2014


details:   http://hg.dovecot.org/dovecot-2.2/rev/beaee1a2ad61
changeset: 17680:beaee1a2ad61
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Aug 05 17:37:25 2014 +0200
description:
lib-http server: Made http_server_request_[un]ref() public.
Also http_server_request_unref() now returns if this was the last reference
or not.

diffstat:

 src/lib-http/http-server-private.h |  2 --
 src/lib-http/http-server-request.c |  5 +++--
 src/lib-http/http-server.h         |  6 ++++++
 3 files changed, 9 insertions(+), 4 deletions(-)

diffs (56 lines):

diff -r 7e084d643e59 -r beaee1a2ad61 src/lib-http/http-server-private.h
--- a/src/lib-http/http-server-private.h	Tue Aug 05 16:28:15 2014 +0200
+++ b/src/lib-http/http-server-private.h	Tue Aug 05 17:37:25 2014 +0200
@@ -156,8 +156,6 @@
 
 struct http_server_request *
 http_server_request_new(struct http_server_connection *conn);
-void http_server_request_ref(struct http_server_request *req);
-void http_server_request_unref(struct http_server_request **_req);
 void http_server_request_abort(struct http_server_request **_req);
 
 void http_server_request_halt_payload(struct http_server_request *req);
diff -r 7e084d643e59 -r beaee1a2ad61 src/lib-http/http-server-request.c
--- a/src/lib-http/http-server-request.c	Tue Aug 05 16:28:15 2014 +0200
+++ b/src/lib-http/http-server-request.c	Tue Aug 05 17:37:25 2014 +0200
@@ -28,14 +28,14 @@
 	req->refcount++;
 }
 
-void http_server_request_unref(struct http_server_request **_req)
+bool http_server_request_unref(struct http_server_request **_req)
 {
 	struct http_server_request *req = *_req;
 	struct http_server_connection *conn = req->conn;
 
 	i_assert(req->refcount > 0);
 	if (--req->refcount > 0)
-		return;
+		return TRUE;
 
 	if (req->state < 	HTTP_SERVER_REQUEST_STATE_FINISHED) {
 		req->state = HTTP_SERVER_REQUEST_STATE_ABORTED;
@@ -52,6 +52,7 @@
 		http_server_response_free(req->response);
 	pool_unref(&req->pool);
 	*_req = NULL;
+	return FALSE;
 }
 
 void http_server_request_set_destroy_callback(struct http_server_request *req,
diff -r 7e084d643e59 -r beaee1a2ad61 src/lib-http/http-server.h
--- a/src/lib-http/http-server.h	Tue Aug 05 16:28:15 2014 +0200
+++ b/src/lib-http/http-server.h	Tue Aug 05 17:37:25 2014 +0200
@@ -82,6 +82,12 @@
 					      void (*callback)(void *),
 					      void *context);
 
+/* Reference a server request */
+void http_server_request_ref(struct http_server_request *req);
+/* Unreference a server request. Returns TRUE if there are still more
+   references, FALSE if not. */
+bool http_server_request_unref(struct http_server_request **_req);
+
 /* Start creating the response for the request. This function can be called
    only once for each request. */
 struct http_server_response *


More information about the dovecot-cvs mailing list