From: Timo Sirainen Date: Sun, 27 Feb 2022 21:05:07 +0000 (+0100) Subject: lib-storage: mail_user_set_get_driver_settings() - Add set_parser parameter X-Git-Tag: 2.4.0~3343 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f00dbcbdc66f0410111e07d18e08352ee43c2f96;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: mail_user_set_get_driver_settings() - Add set_parser parameter This is in preperation for the next commit that uses it. --- diff --git a/src/lib-storage/index/imapc/imapc-list.c b/src/lib-storage/index/imapc/imapc-list.c index f4d19719ce..e5a4a62df1 100644 --- a/src/lib-storage/index/imapc/imapc-list.c +++ b/src/lib-storage/index/imapc/imapc-list.c @@ -94,7 +94,8 @@ static int imapc_list_init(struct mailbox_list *_list, const char **error_r) { struct imapc_mailbox_list *list = (struct imapc_mailbox_list *)_list; - list->set = mail_user_set_get_driver_settings(_list->ns->user->set_info, + list->set = mail_user_set_get_driver_settings(_list->ns->user->set_parser, + _list->ns->user->set_info, _list->ns->user_set, imapc_get_setting_parser_info()); if (imapc_storage_client_create(_list->ns, list->set, _list->mail_set, diff --git a/src/lib-storage/mail-namespace.c b/src/lib-storage/mail-namespace.c index 09c0b5c58a..a4a3bdcdc8 100644 --- a/src/lib-storage/mail-namespace.c +++ b/src/lib-storage/mail-namespace.c @@ -98,8 +98,8 @@ int mail_namespace_alloc(struct mail_user *user, ns->set = ns_set; ns->unexpanded_set = unexpanded_set; ns->user_set = user_all_settings; - ns->mail_set = mail_user_set_get_driver_settings(user->set_info, - ns->user_set, &mail_storage_setting_parser_info); + ns->mail_set = mail_user_set_get_driver_settings(user->set_parser, + user->set_info, ns->user_set, &mail_storage_setting_parser_info); i_array_init(&ns->all_storages, 2); if (strcmp(ns_set->type, "private") == 0) { diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 5983b66af2..a67dcd97f7 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -107,13 +107,14 @@ mail_storage_service_var_expand(struct mail_storage_service_ctx *ctx, const char **error_r); static bool -mail_user_set_get_mail_debug(const struct setting_parser_info *user_info, +mail_user_set_get_mail_debug(const struct setting_parser_context *set_parser, + const struct setting_parser_info *user_info, const struct mail_user_settings *user_set) { const struct mail_storage_settings *mail_set; - mail_set = mail_user_set_get_driver_settings(user_info, user_set, - &mail_storage_setting_parser_info); + mail_set = mail_user_set_get_driver_settings(set_parser, user_info, + user_set, &mail_storage_setting_parser_info); return mail_set->mail_debug; } @@ -1122,13 +1123,14 @@ void mail_storage_service_set_auth_conn(struct mail_storage_service_ctx *ctx, static void mail_storage_service_first_init(struct mail_storage_service_ctx *ctx, + const struct setting_parser_context *set_parser, const struct setting_parser_info *user_info, const struct mail_user_settings *user_set, enum mail_storage_service_flags service_flags) { enum auth_master_flags flags = 0; - ctx->debug = mail_user_set_get_mail_debug(user_info, user_set) || + ctx->debug = mail_user_set_get_mail_debug(set_parser, user_info, user_set) || (service_flags & MAIL_STORAGE_SERVICE_FLAG_DEBUG) != 0; if (ctx->debug) flags |= AUTH_MASTER_FLAG_DEBUG; @@ -1140,6 +1142,7 @@ mail_storage_service_first_init(struct mail_storage_service_ctx *ctx, static int mail_storage_service_load_modules(struct mail_storage_service_ctx *ctx, + const struct setting_parser_context *set_parser, const struct setting_parser_info *user_info, const struct mail_user_settings *user_set, const char **error_r) @@ -1156,7 +1159,7 @@ mail_storage_service_load_modules(struct mail_storage_service_ctx *ctx, mod_set.binary_name = master_service_get_name(ctx->service); mod_set.setting_name = "mail_plugins"; mod_set.require_init_funcs = TRUE; - mod_set.debug = mail_user_set_get_mail_debug(user_info, user_set); + mod_set.debug = mail_user_set_get_mail_debug(set_parser, user_info, user_set); return module_dir_try_load_missing(&mail_storage_service_modules, user_set->mail_plugin_dir, @@ -1270,9 +1273,9 @@ mail_storage_service_lookup_real(struct mail_storage_service_ctx *ctx, mail_storage_service_set_log_prefix(ctx, user_set, NULL, input, NULL); if (ctx->conn == NULL) - mail_storage_service_first_init(ctx, user_info, user_set, flags); + mail_storage_service_first_init(ctx, set_parser, user_info, user_set, flags); /* load global plugins */ - if (mail_storage_service_load_modules(ctx, user_info, user_set, error_r) < 0) { + if (mail_storage_service_load_modules(ctx, set_parser, user_info, user_set, error_r) < 0) { pool_unref(&user_pool); return -1; } @@ -1380,7 +1383,8 @@ mail_storage_service_lookup_real(struct mail_storage_service_ctx *ctx, /* load per-user plugins */ if (ret > 0) { - if (mail_storage_service_load_modules(ctx, user_info, + if (mail_storage_service_load_modules(ctx, user->set_parser, + user_info, user->user_set, error_r) < 0) { ret = -2; @@ -1683,7 +1687,7 @@ void mail_storage_service_init_settings(struct mail_storage_service_ctx *ctx, user_set = settings_parser_get_root_set(set_parser, &mail_user_setting_parser_info); - mail_storage_service_first_init(ctx, user_info, user_set, ctx->flags); + mail_storage_service_first_init(ctx, set_parser, user_info, user_set, ctx->flags); pool_unref(&temp_pool); } @@ -1766,7 +1770,7 @@ void *mail_storage_service_user_get_set(struct mail_storage_service_user *user, const struct mail_storage_settings * mail_storage_service_user_get_mail_set(struct mail_storage_service_user *user) { - return mail_user_set_get_driver_settings( + return mail_user_set_get_driver_settings(user->set_parser, user->user_info, user->user_set, &mail_storage_setting_parser_info); } diff --git a/src/lib-storage/mail-storage-settings.c b/src/lib-storage/mail-storage-settings.c index 6ae5d1673c..acb879db30 100644 --- a/src/lib-storage/mail-storage-settings.c +++ b/src/lib-storage/mail-storage-settings.c @@ -349,7 +349,8 @@ const struct setting_parser_info mail_user_setting_parser_info = { }; const void * -mail_user_set_get_driver_settings(const struct setting_parser_info *base_info, +mail_user_set_get_driver_settings(const struct setting_parser_context *set_parser ATTR_UNUSED, + const struct setting_parser_info *base_info, const struct mail_user_settings *set, const struct setting_parser_info *info) { @@ -366,14 +367,16 @@ mail_user_set_get_driver_settings(const struct setting_parser_info *base_info, const struct mail_storage_settings * mail_user_set_get_storage_set(struct mail_user *user) { - return mail_user_set_get_driver_settings(user->set_info, user->set, + return mail_user_set_get_driver_settings(user->set_parser, + user->set_info, user->set, &mail_storage_setting_parser_info); } const void *mail_namespace_get_driver_settings(struct mail_namespace *ns, struct mail_storage *storage) { - return mail_user_set_get_driver_settings(storage->user->set_info, + return mail_user_set_get_driver_settings(storage->user->set_parser, + storage->user->set_info, ns->user_set, storage->v.get_setting_parser_info()); } diff --git a/src/lib-storage/mail-storage-settings.h b/src/lib-storage/mail-storage-settings.h index e2f48ad6ea..a056d0d9b3 100644 --- a/src/lib-storage/mail-storage-settings.h +++ b/src/lib-storage/mail-storage-settings.h @@ -11,6 +11,7 @@ struct mail_namespace; struct mail_storage; struct message_address; struct smtp_address; +struct setting_parser_context; struct mail_storage_settings { const char *mail_location; @@ -152,7 +153,8 @@ extern const struct mailbox_settings mailbox_default_settings; struct ssl_iostream_settings; const void * -mail_user_set_get_driver_settings(const struct setting_parser_info *base_info, +mail_user_set_get_driver_settings(const struct setting_parser_context *set_parser, + const struct setting_parser_info *base_info, const struct mail_user_settings *set, const struct setting_parser_info *info); diff --git a/src/lib-storage/mailbox-list.c b/src/lib-storage/mailbox-list.c index b751cde2cc..90f0d3fc24 100644 --- a/src/lib-storage/mailbox-list.c +++ b/src/lib-storage/mailbox-list.c @@ -437,8 +437,9 @@ const char *mailbox_list_get_unexpanded_path(struct mailbox_list *list, location++; if (*location == '\0') { - mail_set = mail_user_set_get_driver_settings(user->set_info, - user->unexpanded_set, &mail_storage_setting_parser_info); + mail_set = mail_user_set_get_driver_settings(user->set_parser, + user->set_info, user->unexpanded_set, + &mail_storage_setting_parser_info); i_assert(mail_set != NULL); location = mail_set->mail_location; if (*location == SETTING_STRVAR_EXPANDED[0])