From: Markus Valentin Date: Tue, 5 Dec 2023 15:11:59 +0000 (+0100) Subject: lib-http: http_server_init() - Use settings struct pointer from arguments X-Git-Tag: 2.4.1~1057 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2342e55ccf2bd4772ff574b33818396ddff2a973;p=thirdparty%2Fdovecot%2Fcore.git lib-http: http_server_init() - Use settings struct pointer from arguments No longer create and fill a new settings struct but use the one which is passed as an argument. --- diff --git a/src/doveadm/client-connection-http.c b/src/doveadm/client-connection-http.c index 1f97f7828b..02ca068b6d 100644 --- a/src/doveadm/client-connection-http.c +++ b/src/doveadm/client-connection-http.c @@ -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); } diff --git a/src/lib-http/http-server-private.h b/src/lib-http/http-server-private.h index 6521c75941..4b5de1bdad 100644 --- a/src/lib-http/http-server-private.h +++ b/src/lib-http/http-server-private.h @@ -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; diff --git a/src/lib-http/http-server.c b/src/lib-http/http-server.c index a3ec1fd82c..66fa04192e 100644 --- a/src/lib-http/http-server.c +++ b/src/lib-http/http-server.c @@ -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); } diff --git a/src/lib-http/http-server.h b/src/lib-http/http-server.h index baa13082f1..a4077c8ee2 100644 --- a/src/lib-http/http-server.h +++ b/src/lib-http/http-server.h @@ -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); diff --git a/src/lib-http/test-http-payload.c b/src/lib-http/test-http-payload.c index 6d41bb8ac3..56fa767aed 100644 --- a/src/lib-http/test-http-payload.c +++ b/src/lib-http/test-http-payload.c @@ -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); diff --git a/src/lib-http/test-http-server-errors.c b/src/lib-http/test-http-server-errors.c index f78720c60c..1f1daa6a3b 100644 --- a/src/lib-http/test-http-server-errors.c +++ b/src/lib-http/test-http-server-errors.c @@ -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); diff --git a/src/lib-http/test-http-server.c b/src/lib-http/test-http-server.c index 2e2f5ab20f..3ca7bf14b5 100644 --- a/src/lib-http/test-http-server.c +++ b/src/lib-http/test-http-server.c @@ -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; diff --git a/src/stats/client-http.c b/src/stats/client-http.c index b21fc80b99..1ca9a99e53 100644 --- a/src/stats/client-http.c +++ b/src/stats/client-http.c @@ -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);