]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: http_server_init() - Use settings struct pointer from arguments
authorMarkus Valentin <markus.valentin@open-xchange.com>
Tue, 5 Dec 2023 15:11:59 +0000 (16:11 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:12 +0000 (12:34 +0200)
No longer create and fill a new settings struct but use the one which is
passed as an argument.

src/doveadm/client-connection-http.c
src/lib-http/http-server-private.h
src/lib-http/http-server.c
src/lib-http/http-server.h
src/lib-http/test-http-payload.c
src/lib-http/test-http-server-errors.c
src/lib-http/test-http-server.c
src/stats/client-http.c

index 1f97f7828b7106181a07c5adc8fe630443cc5d19..02ca068b6d598104e691eb33addb81879dfb2cf4 100644 (file)
@@ -1209,9 +1209,10 @@ doveadm_http_server_connection_destroy(void *context,
 
 void doveadm_http_server_init(struct event *event)
 {
-       struct http_server_settings http_set = {
-               .rawlog_dir = doveadm_settings->doveadm_http_rawlog_dir,
-       };
+       struct http_server_settings http_set;
+
+       http_server_settings_init(null_pool, &http_set);
+       http_set.rawlog_dir = doveadm_settings->doveadm_http_rawlog_dir;
 
        doveadm_http_server = http_server_init(&http_set, event);
 }
index 6521c759413c3ba5f58653ba35528dfdffe90dd5..4b5de1bdad3712ba95f53343e8a6e05160b00f11 100644 (file)
@@ -182,7 +182,7 @@ struct http_server_resource {
 struct http_server {
        pool_t pool;
 
-       struct http_server_settings *set;
+       const struct http_server_settings *set;
        const struct ssl_iostream_settings *ssl_set;
 
        struct ioloop *ioloop;
index a3ec1fd82cf1be45d4069384c37eb17b3d3c398f..66fa04192ee095b8f35be756f1951b8e84c3b8d6 100644 (file)
@@ -25,6 +25,16 @@ static struct event_category event_category_http_server = {
  * Server
  */
 
+void http_server_settings_init(pool_t pool, struct http_server_settings *set_r)
+{
+       i_zero(set_r);
+       set_r->pool = pool;
+       set_r->base_dir = PKG_RUNDIR;
+       set_r->default_host = "";
+       set_r->max_pipelined_requests = 1;
+       set_r->request_max_payload_size = HTTP_SERVER_DEFAULT_MAX_PAYLOAD_SIZE;
+}
+
 struct http_server *http_server_init(const struct http_server_settings *set,
                                     struct event *event_parent)
 {
@@ -33,25 +43,10 @@ struct http_server *http_server_init(const struct http_server_settings *set,
 
        pool = pool_alloconly_create("http server", 1024);
        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 (set->default_host != NULL && *set->default_host != '\0')
-               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->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 = set;
+       pool_ref(set->pool);
 
        server->event = event_create(event_parent);
        event_add_category(server->event, &event_category_http_server);
@@ -80,6 +75,7 @@ void http_server_deinit(struct http_server **_server)
        i_assert(array_count(&server->locations) == 0);
 
        event_unref(&server->event);
+       settings_free(server->set);
        pool_unref(&server->pool);
 }
 
index baa13082f1290167a6664cfcde03f4534c90edd3..a4077c8ee2fa575eb10d254acd0bcae3ece47e4d 100644 (file)
@@ -420,6 +420,7 @@ void http_server_resource_set_destroy_callback(struct http_server_resource *res,
  * Server
  */
 
+void http_server_settings_init(pool_t pool, struct http_server_settings *set_r);
 struct http_server *http_server_init(const struct http_server_settings *set,
                                     struct event *event_parent);
 void http_server_deinit(struct http_server **_server);
index 6d41bb8ac307f2b7bfa4ad190dbba3b94032401e..56fa767aed2f9fa481a122eb07c9078825a4c394 100644 (file)
@@ -1768,7 +1768,7 @@ test_run_client_server(
 static void
 test_init_server_settings(struct http_server_settings *server_set_r)
 {
-       i_zero(server_set_r);
+       http_server_settings_init(null_pool, server_set_r);
        server_set_r->request_max_payload_size = UOFF_T_MAX;
 
        if (small_socket_buffers) {
@@ -1810,7 +1810,6 @@ test_run_sequential(
 
        /* server settings */
        test_init_server_settings(&http_server_set);
-       http_server_set.max_pipelined_requests = 0;
 
        /* client settings */
        test_init_client_settings(&http_client_set);
index f78720c60c52d1c3fd7749d779f48fa161da21d3..1f1daa6a3bb106d519d121cccc72aa20d2c270aa 100644 (file)
@@ -839,7 +839,7 @@ static void test_client_run(unsigned int index)
 static void test_server_defaults(struct http_server_settings *http_set)
 {
        /* server settings */
-       i_zero(http_set);
+       http_server_settings_init(null_pool, http_set);
        http_set->max_client_idle_time_msecs = 5*1000;
        http_set->max_pipelined_requests = 1;
 }
@@ -891,7 +891,7 @@ static void test_server_run(const struct http_server_settings *http_set)
        /* open server socket */
        io_listen = io_add(fd_listen, IO_READ, server_connection_accept, NULL);
 
-       http_server = http_server_init(http_set, event);
+       http_server = http_server_init((struct http_server_settings*) http_set, event);
 
        io_loop_run(ioloop);
 
index 2e2f5ab20f6499751e9985025aacf408d11a4c9f..3ca7bf14b571d0b44013b6665d6548089e7c13cd 100644 (file)
@@ -210,7 +210,7 @@ int main(int argc, char *argv[])
        else if (net_addr2ip(argv[1], &my_ip) < 0)
                i_fatal("Invalid IP parameter");
 
-       i_zero(&http_set);
+       http_server_settings_init(null_pool, &http_set);
        http_set.max_client_idle_time_msecs = 20*1000; /* defaults to indefinite! */
        http_set.max_pipelined_requests = 4;
 
index b21fc80b991628e89ef17360f9e7c17ed4d28378..1ca9a99e532df37e0ce9c902f2ebc0644576eae7 100644 (file)
@@ -215,9 +215,10 @@ stats_http_resource_root_request(void *context ATTR_UNUSED,
 
 void client_http_init(const struct stats_settings *set, struct event *event)
 {
-       struct http_server_settings http_set = {
-               .rawlog_dir = set->stats_http_rawlog_dir,
-       };
+       struct http_server_settings http_set;
+
+       http_server_settings_init(null_pool, &http_set);
+       http_set.rawlog_dir = set->stats_http_rawlog_dir,
 
        i_array_init(&stats_http_resources, 8);