#include "connection.h"
#include "http-server.h"
+#include "llist.h"
#define HTTP_SERVER_REQUEST_MAX_TARGET_LENGTH 4096
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
/* Copyright (c) 2013-2014 Dovecot authors, see the included COPYING file */
#include "lib.h"
-#include "llist.h"
#include "http-server-private.h"
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;
}
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) {
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)
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)) {