From: Timo Sirainen Date: Thu, 5 Jan 2023 02:13:50 +0000 (+0200) Subject: imap: Use master_service_settings_parser_get() X-Git-Tag: 2.4.0~2324 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f06ed47ec49e437c050126b14044f03f713ae940;p=thirdparty%2Fdovecot%2Fcore.git imap: Use master_service_settings_parser_get() --- diff --git a/src/imap/imap-client.c b/src/imap/imap-client.c index 6d70a8e82d..2db8e7eb37 100644 --- a/src/imap/imap-client.c +++ b/src/imap/imap-client.c @@ -14,10 +14,12 @@ #include "time-util.h" #include "var-expand.h" #include "master-service.h" +#include "master-service-settings.h" #include "imap-resp-code.h" #include "imap-util.h" #include "imap-urlauth.h" #include "mail-error.h" +#include "smtp-submit-settings.h" #include "mail-namespace.h" #include "mail-storage-service.h" #include "mail-autoexpunge.h" @@ -557,6 +559,8 @@ static void client_default_destroy(struct client *client, const char *reason) imap_client_count--; DLLIST_REMOVE(&imap_clients, client); + master_service_settings_free(client->set); + master_service_settings_free(client->smtp_set); event_unref(&client->event); i_free(client->last_cmd_name); pool_unref(&client->pool); diff --git a/src/imap/imap-settings.c b/src/imap/imap-settings.c index 71c880642f..2f0f7377a0 100644 --- a/src/imap/imap-settings.c +++ b/src/imap/imap-settings.c @@ -142,6 +142,7 @@ const struct setting_parser_info imap_setting_parser_info = { .defaults = &imap_default_settings, .struct_size = sizeof(struct imap_settings), + .pool_offset1 = 1 + offsetof(struct imap_settings, pool), .check_func = imap_settings_verify, .dependencies = imap_setting_dependencies }; diff --git a/src/imap/imap-settings.h b/src/imap/imap-settings.h index 9587b7753a..ef62eae02b 100644 --- a/src/imap/imap-settings.h +++ b/src/imap/imap-settings.h @@ -20,6 +20,7 @@ enum imap_client_fetch_failure { /* */ struct imap_settings { + pool_t pool; bool verbose_proctitle; const char *rawlog_dir; diff --git a/src/imap/main.c b/src/imap/main.c index 0a826a0f25..53398aa240 100644 --- a/src/imap/main.c +++ b/src/imap/main.c @@ -14,6 +14,7 @@ #include "settings-parser.h" #include "master-interface.h" #include "master-service.h" +#include "master-service-settings.h" #include "master-admin-client.h" #include "login-server.h" #include "mail-user.h" @@ -249,7 +250,7 @@ int client_create_from_input(const struct mail_storage_service_input *input, struct mail_user *mail_user; struct client *client; struct imap_settings *imap_set; - struct smtp_submit_settings *smtp_set; + struct smtp_submit_settings *smtp_set = NULL; struct event *event; event = event_create(NULL); @@ -280,10 +281,21 @@ int client_create_from_input(const struct mail_storage_service_input *input, restrict_access_allow_coredumps(TRUE); - smtp_set = settings_parser_get_root_set(mail_user->set_parser, - &smtp_submit_setting_parser_info); - imap_set = settings_parser_get_root_set(mail_user->set_parser, - &imap_setting_parser_info); + if (master_service_settings_parser_get(mail_user->event, + mail_user->set_parser, + &smtp_submit_setting_parser_info, + MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND, + &smtp_set, error_r) < 0 || + master_service_settings_parser_get(mail_user->event, + mail_user->set_parser, + &imap_setting_parser_info, + MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND, + &imap_set, error_r) < 0) { + master_service_settings_free(smtp_set); + mail_user_deinit(&mail_user); + event_unref(&event); + return -1; + } if (imap_set->verbose_proctitle) verbose_proctitle = TRUE;