]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: Make http-server settings a pointer
authorMarkus Valentin <markus.valentin@open-xchange.com>
Tue, 5 Dec 2023 13:50:54 +0000 (14:50 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:12 +0000 (12:34 +0200)
This is needed in order to support the new settings structure where
setting structs are retrieved and used as references. This makes it
unnecessary to have a copy of the settings struct as part of
http_server.

src/lib-http/http-server-connection.c
src/lib-http/http-server-private.h
src/lib-http/http-server-request.c
src/lib-http/http-server.c

index f1e41c14a7ee250a1d6ad364940d0ef7173a4801..34e14372e603331ed5ab928f224f1ec40296346f 100644 (file)
@@ -987,8 +987,8 @@ http_server_connection_create(struct http_server *server,
        conn = i_new(struct http_server_connection, 1);
        conn->refcount = 1;
        conn->server = server;
-       conn->set = &server->set;
-       pool_ref(server->set.pool);
+       conn->set = server->set;
+       pool_ref(server->set->pool);
        conn->ioloop = current_ioloop;
        conn->ssl = ssl;
        conn->callbacks = callbacks;
index 4d6a70ce68d2e4cd56b0b6b1da204c48b4178d5f..a8e4927daa3cd9523e6efaa6ab78c8410d592d4f 100644 (file)
@@ -126,7 +126,7 @@ struct http_server_request {
 struct http_server_connection {
        struct connection conn;
        struct http_server *server;
-       struct http_server_settings *set;
+       const struct http_server_settings *set;
        struct ioloop *ioloop, *ioloop_switching;
        struct event *event;
        unsigned int refcount;
@@ -182,7 +182,7 @@ struct http_server_resource {
 struct http_server {
        pool_t pool;
 
-       struct http_server_settings set;
+       struct http_server_settings *set;
 
        struct ioloop *ioloop;
        struct event *event;
index c98d4652732392f85855db0a43ede66fd6fca489..8c974a95416210e167ff767131d97bee42df1e61 100644 (file)
@@ -338,7 +338,7 @@ void http_server_request_received(struct http_server_request *req)
                "(%u requests pending; %u maximum)",
                http_server_request_label(req),
                req->conn->request_queue_count,
-               req->conn->server->set.max_pipelined_requests);
+               req->conn->server->set->max_pipelined_requests);
 }
 
 void http_server_request_callback(struct http_server_request *req)
index 1e61cdf06249f7e79cca778a5df09fa6506d7f05..e1aa30a6d9d0de4e2f60d50428f4e9915319b6b1 100644 (file)
@@ -35,28 +35,29 @@ struct http_server *http_server_init(const struct http_server_settings *set,
        pool_size = (set->ssl != NULL) ? 10240 : 1024; /* ca/cert/key will be >8K */
        pool = pool_alloconly_create("http server", pool_size);
        server = p_new(pool, struct http_server, 1);
+       server->set = p_new(pool, struct http_server_settings, 1);
        server->pool = pool;
 
-       if (server->set.pool == NULL)
-               server->set.pool = null_pool;
+       if (server->set->pool == NULL)
+               server->set->pool = null_pool;
        if (set->default_host != NULL && *set->default_host != '\0')
-               server->set.default_host = p_strdup(pool, set->default_host);
+               server->set->default_host = p_strdup(pool, set->default_host);
        if (set->rawlog_dir != NULL && *set->rawlog_dir != '\0')
-               server->set.rawlog_dir = p_strdup(pool, set->rawlog_dir);
+               server->set->rawlog_dir = p_strdup(pool, set->rawlog_dir);
        if (set->ssl != NULL) {
-               server->set.ssl = set->ssl;
-               pool_ref(server->set.ssl->pool);
+               server->set->ssl = set->ssl;
+               pool_ref(server->set->ssl->pool);
        }
-       server->set.max_client_idle_time_msecs = set->max_client_idle_time_msecs;
-       server->set.max_pipelined_requests =
+       server->set->max_client_idle_time_msecs = set->max_client_idle_time_msecs;
+       server->set->max_pipelined_requests =
                (set->max_pipelined_requests > 0 ? set->max_pipelined_requests : 1);
-       server->set.request_max_target_length = set->request_max_target_length;
-       server->set.request_max_payload_size = set->request_max_payload_size;
-       server->set.request_hdr_max_size = set->request_hdr_max_size;
-       server->set.request_hdr_max_field_size = set->request_hdr_max_field_size;
-       server->set.request_hdr_max_fields = set->request_hdr_max_fields;
-       server->set.socket_send_buffer_size = set->socket_send_buffer_size;
-       server->set.socket_recv_buffer_size = set->socket_recv_buffer_size;
+       server->set->request_max_target_length = set->request_max_target_length;
+       server->set->request_max_payload_size = set->request_max_payload_size;
+       server->set->request_hdr_max_size = set->request_hdr_max_size;
+       server->set->request_hdr_max_field_size = set->request_hdr_max_field_size;
+       server->set->request_hdr_max_fields = set->request_hdr_max_fields;
+       server->set->socket_send_buffer_size = set->socket_send_buffer_size;
+       server->set->socket_recv_buffer_size = set->socket_recv_buffer_size;
 
        server->event = event_create(event_parent);
        event_add_category(server->event, &event_category_http_server);
@@ -83,7 +84,7 @@ void http_server_deinit(struct http_server **_server)
                http_server_resource_free(&res);
        i_assert(array_count(&server->locations) == 0);
 
-       settings_free(server->set.ssl);
+       settings_free(server->set->ssl);
        event_unref(&server->event);
        pool_unref(&server->pool);
 }