dovecot-2.2: lib-http: server_request/connection - improve encap...

dovecot at dovecot.org dovecot at dovecot.org
Wed Aug 13 10:36:29 UTC 2014


details:   http://hg.dovecot.org/dovecot-2.2/rev/c810e288aaed
changeset: 17713:c810e288aaed
user:      Phil Carmody <phil at dovecot.fi>
date:      Wed Aug 13 13:34:22 2014 +0300
description:
lib-http: server_request/connection - improve encapsulation
It just feels a bit dirty having the request mess around with the
connection's internals, have the connection manage its linked lists
itself. No functional changes.

Signed-off-by: Phil Carmody <phil at dovecot.fi>

diffstat:

 src/lib-http/http-server-private.h |  14 ++++++++++++++
 src/lib-http/http-server-request.c |  17 ++++++-----------
 2 files changed, 20 insertions(+), 11 deletions(-)

diffs (86 lines):

diff -r e7c5944ba16b -r c810e288aaed src/lib-http/http-server-private.h
--- a/src/lib-http/http-server-private.h	Wed Aug 13 12:51:41 2014 +0300
+++ b/src/lib-http/http-server-private.h	Wed Aug 13 13:34:22 2014 +0300
@@ -4,6 +4,7 @@
 #include "connection.h"
 
 #include "http-server.h"
+#include "llist.h"
 
 #define HTTP_SERVER_REQUEST_MAX_TARGET_LENGTH 4096
 
@@ -201,4 +202,17 @@
 	http_server_tunnel_callback_t callback, void *context);
 bool http_server_connection_pending_payload(struct http_server_connection *conn);
 
+static inline void http_server_connection_add_request(struct http_server_connection *conn,
+						      struct http_server_request *sreq)
+{
+	DLLIST2_APPEND(&conn->request_queue_head, &conn->request_queue_tail, sreq);
+	conn->request_queue_count++;
+}
+static inline void http_server_connection_remove_request(struct http_server_connection *conn,
+							 struct http_server_request *sreq)
+{
+	DLLIST2_REMOVE(&conn->request_queue_head, &conn->request_queue_tail, sreq);
+	conn->request_queue_count--;
+}
+
 #endif
diff -r e7c5944ba16b -r c810e288aaed src/lib-http/http-server-request.c
--- a/src/lib-http/http-server-request.c	Wed Aug 13 12:51:41 2014 +0300
+++ b/src/lib-http/http-server-request.c	Wed Aug 13 13:34:22 2014 +0300
@@ -1,7 +1,6 @@
 /* Copyright (c) 2013-2014 Dovecot authors, see the included COPYING file */
 
 #include "lib.h"
-#include "llist.h"
 
 #include "http-server-private.h"
 
@@ -18,8 +17,7 @@
 	req->conn = conn;
 	req->server = conn->server;
 
-	DLLIST2_APPEND(&conn->request_queue_head, &conn->request_queue_tail, req);
-	conn->request_queue_count++;
+	http_server_connection_add_request(conn, req);
 	return req;
 }
 
@@ -37,10 +35,9 @@
 	if (--req->refcount > 0)
 		return TRUE;
 
-	if (req->state < 	HTTP_SERVER_REQUEST_STATE_FINISHED) {
+	if (req->state < HTTP_SERVER_REQUEST_STATE_FINISHED) {
 		req->state = HTTP_SERVER_REQUEST_STATE_ABORTED;
-		DLLIST2_REMOVE(&conn->request_queue_head, &conn->request_queue_tail, req);
-		conn->request_queue_count--;
+		http_server_connection_remove_request(conn, req);
 	}
 
 	if (req->destroy_callback != NULL) {
@@ -81,10 +78,9 @@
 	struct http_server_request *req = *_req;
 	struct http_server_connection *conn = req->conn;
 
-	if (req->state < 	HTTP_SERVER_REQUEST_STATE_FINISHED) {
+	if (req->state < HTTP_SERVER_REQUEST_STATE_FINISHED) {
 		req->state = HTTP_SERVER_REQUEST_STATE_ABORTED;
-		DLLIST2_REMOVE(&conn->request_queue_head, &conn->request_queue_tail, req);
-		conn->request_queue_count--;
+		http_server_connection_remove_request(conn, req);
 	}
 	
 	if (req->response != NULL)
@@ -173,8 +169,7 @@
 	i_assert(req->state < HTTP_SERVER_REQUEST_STATE_FINISHED);
 	req->state = HTTP_SERVER_REQUEST_STATE_FINISHED;
 
-	DLLIST2_REMOVE(&conn->request_queue_head, &conn->request_queue_tail, req);
-	conn->request_queue_count--;
+	http_server_connection_remove_request(conn, req);
 	conn->stats.response_count++;
 
 	if (tunnel_callback == NULL && (req->req.connection_close || resp->close)) {


More information about the dovecot-cvs mailing list