From: Timo Sirainen Date: Thu, 5 Jan 2023 01:45:29 +0000 (+0200) Subject: imap-urlauth: Use master_service_settings_get[_or_fatal]() X-Git-Tag: 2.4.0~2321 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8166519c4b8bc89ebfec468a59fd306810a9cfa3;p=thirdparty%2Fdovecot%2Fcore.git imap-urlauth: Use master_service_settings_get[_or_fatal]() --- diff --git a/src/imap-urlauth/imap-urlauth-client.c b/src/imap-urlauth/imap-urlauth-client.c index 30fe87a13f..6f44be6cb9 100644 --- a/src/imap-urlauth/imap-urlauth-client.c +++ b/src/imap-urlauth/imap-urlauth-client.c @@ -15,6 +15,7 @@ #include "var-expand.h" #include "restrict-access.h" #include "master-service.h" +#include "master-service-settings.h" #include "master-interface.h" #include "imap-urlauth-worker-client.h" @@ -48,6 +49,7 @@ int client_create(const char *service, const char *username, client = i_new(struct client, 1); client->set = set; + pool_ref(client->set->pool); client->event = event_create(NULL); event_set_forced_debug(client->event, set->mail_debug); @@ -131,6 +133,7 @@ void client_destroy(struct client *client, const char *reason) connection_deinit(&client->conn); event_unref(&client->event); + master_service_settings_free(client->set); i_free(client->username); i_free(client->service); diff --git a/src/imap-urlauth/imap-urlauth-settings.c b/src/imap-urlauth/imap-urlauth-settings.c index a843b235f4..6cbaf4a619 100644 --- a/src/imap-urlauth/imap-urlauth-settings.c +++ b/src/imap-urlauth/imap-urlauth-settings.c @@ -91,5 +91,6 @@ const struct setting_parser_info imap_urlauth_setting_parser_info = { .defaults = &imap_urlauth_default_settings, .struct_size = sizeof(struct imap_urlauth_settings), + .pool_offset1 = 1 + offsetof(struct imap_urlauth_settings, pool), .dependencies = imap_urlauth_setting_dependencies }; diff --git a/src/imap-urlauth/imap-urlauth-settings.h b/src/imap-urlauth/imap-urlauth-settings.h index c04080e16a..fb0a4af8a7 100644 --- a/src/imap-urlauth/imap-urlauth-settings.h +++ b/src/imap-urlauth/imap-urlauth-settings.h @@ -4,6 +4,7 @@ struct mail_user_settings; struct imap_urlauth_settings { + pool_t pool; const char *base_dir; bool mail_debug; diff --git a/src/imap-urlauth/imap-urlauth-worker-settings.c b/src/imap-urlauth/imap-urlauth-worker-settings.c index 11ffa0b1c5..7bc9d783a5 100644 --- a/src/imap-urlauth/imap-urlauth-worker-settings.c +++ b/src/imap-urlauth/imap-urlauth-worker-settings.c @@ -86,5 +86,6 @@ const struct setting_parser_info imap_urlauth_worker_setting_parser_info = { .defaults = &imap_urlauth_worker_default_settings, .struct_size = sizeof(struct imap_urlauth_worker_settings), + .pool_offset1 = 1 + offsetof(struct imap_urlauth_worker_settings, pool), .dependencies = imap_urlauth_worker_setting_dependencies }; diff --git a/src/imap-urlauth/imap-urlauth-worker-settings.h b/src/imap-urlauth/imap-urlauth-worker-settings.h index 28154e8bcc..36340b3fd2 100644 --- a/src/imap-urlauth/imap-urlauth-worker-settings.h +++ b/src/imap-urlauth/imap-urlauth-worker-settings.h @@ -4,6 +4,7 @@ struct mail_user_settings; struct imap_urlauth_worker_settings { + pool_t pool; bool verbose_proctitle; /* imap_urlauth: */ diff --git a/src/imap-urlauth/imap-urlauth-worker.c b/src/imap-urlauth/imap-urlauth-worker.c index a1ba880e66..dc61c231dd 100644 --- a/src/imap-urlauth/imap-urlauth-worker.c +++ b/src/imap-urlauth/imap-urlauth-worker.c @@ -20,6 +20,7 @@ #include "settings-parser.h" #include "connection.h" #include "master-service.h" +#include "master-service-settings.h" #include "master-interface.h" #include "mail-storage.h" #include "mail-storage-service.h" @@ -238,6 +239,7 @@ static void client_destroy(struct client *client) connection_deinit(&client->conn_ctrl); connection_deinit(&client->conn); event_unref(&client->event); + master_service_settings_free(client->set); i_free(client); imap_urlauth_worker_refresh_proctitle(); @@ -557,14 +559,21 @@ client_handle_user_command(struct client *client, const char *cmd, return 1; } + if (master_service_settings_parser_get(client->event, + mail_user->set_parser, + &imap_urlauth_worker_setting_parser_info, + MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND, + &set, &error) < 0) { + e_error(client->event, "user %s: %s", input.username, error); + client_abort(client, "Session aborted: Failed to get settings"); + return 0; + } + event_set_forced_debug(client->event, mail_user->mail_debug); /* drop privileges */ restrict_access_allow_coredumps(TRUE); - set = settings_parser_get_root_set(mail_user->set_parser, - &imap_urlauth_worker_setting_parser_info); - if (set->verbose_proctitle) { verbose_proctitle = TRUE; imap_urlauth_worker_refresh_proctitle(); diff --git a/src/imap-urlauth/imap-urlauth.c b/src/imap-urlauth/imap-urlauth.c index 3a843488a6..882a6faba5 100644 --- a/src/imap-urlauth/imap-urlauth.c +++ b/src/imap-urlauth/imap-urlauth.c @@ -255,12 +255,13 @@ int main(int argc, char *argv[]) i_zero(&input); input.roots = set_roots; input.service = "imap-urlauth"; + input.disable_check_settings = TRUE; if (master_service_settings_read(master_service, &input, &output, &error) < 0) i_fatal("%s", error); imap_urlauth_settings = - master_service_settings_get_root_set(master_service, + master_service_settings_get_or_fatal(NULL, &imap_urlauth_setting_parser_info); if (imap_urlauth_settings->verbose_proctitle) @@ -299,6 +300,7 @@ int main(int argc, char *argv[]) if (login_server != NULL) login_server_deinit(&login_server); + master_service_settings_free(imap_urlauth_settings); master_service_deinit(&master_service); return 0; }