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