From 55daa0489bb0f1ff31b1c4482e97e4df67150c6a Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Tue, 26 Sep 2023 01:47:21 +0200 Subject: [PATCH] login-common: login-settings - Perform login_settings_read() in a new datastack frame. It can use much datastack space and cause undue datastack growth, particularly in ManageSieve for some reason. --- src/login-common/login-settings.c | 35 ++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/src/login-common/login-settings.c b/src/login-common/login-settings.c index 5213ace303..a2cab493a7 100644 --- a/src/login-common/login-settings.c +++ b/src/login-common/login-settings.c @@ -155,14 +155,13 @@ login_setting_dup(pool_t pool, const struct setting_parser_info *info, return dest; } -struct login_settings * -login_settings_read(pool_t pool, - const struct ip_addr *local_ip, - const struct ip_addr *remote_ip, - const char *local_name, - const struct master_service_ssl_settings **ssl_set_r, - const struct master_service_ssl_server_settings **ssl_server_set_r, - void ***other_settings_r) +static struct login_settings * +login_settings_read_real( + pool_t pool, const struct ip_addr *local_ip, + const struct ip_addr *remote_ip, const char *local_name, + const struct master_service_ssl_settings **ssl_set_r, + const struct master_service_ssl_server_settings **ssl_server_set_r, + void ***other_settings_r) { struct master_service_settings_input input; struct master_service_settings_output output; @@ -204,3 +203,23 @@ login_settings_read(pool_t pool, *other_settings_r = sets + 1; return sets[0]; } + +struct login_settings * +login_settings_read( + pool_t pool, const struct ip_addr *local_ip, + const struct ip_addr *remote_ip, const char *local_name, + const struct master_service_ssl_settings **ssl_set_r, + const struct master_service_ssl_server_settings **ssl_server_set_r, + void ***other_settings_r) +{ + struct login_settings *login_set; + + T_BEGIN { + login_set = login_settings_read_real(pool, local_ip, remote_ip, + local_name, ssl_set_r, + ssl_server_set_r, + other_settings_r); + } T_END; + + return login_set; +} -- 2.47.3