]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: server_request/connection - improve encapsulation
authorPhil Carmody <phil@dovecot.fi>
Wed, 13 Aug 2014 10:34:22 +0000 (13:34 +0300)
committerPhil Carmody <phil@dovecot.fi>
Wed, 13 Aug 2014 10:34:22 +0000 (13:34 +0300)
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@dovecot.fi>
src/lib-http/http-server-private.h
src/lib-http/http-server-request.c

index c340fc7fbac3e259f791f6022750f2be9c0458cc..88d6f896de33034a890b010d19344143b46b3c34 100644 (file)
@@ -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 @@ void http_server_connection_tunnel(struct http_server_connection **_conn,
        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
index 4f5cde4ce7f2cdc887daf77ca815ac075b758581..7367bb8bcc6d6dd5de79f55a210171c3aa96963c 100644 (file)
@@ -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 @@ http_server_request_new(struct http_server_connection *conn)
        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 @@ bool http_server_request_unref(struct http_server_request **_req)
        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 @@ void http_server_request_abort(struct http_server_request **_req)
        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 @@ void http_server_request_finished(struct http_server_request *req)
        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)) {