From: Timo Sirainen Date: Thu, 12 Jan 2023 15:17:29 +0000 (+0200) Subject: lib-storage: Add mail_storage_service_input.unexpanded_set_parser X-Git-Tag: 2.3.21~123 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ec90c65b9217e9f39e15c4a91bb9af6b89ce2674;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Add mail_storage_service_input.unexpanded_set_parser --- diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index a5c47b57fe..86584c5fb0 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -1222,7 +1222,7 @@ mail_storage_service_lookup_real(struct mail_storage_service_ctx *ctx, enum mail_storage_service_flags flags; struct mail_storage_service_user *user; const char *username = input->username; - const struct setting_parser_info *user_info; + const struct setting_parser_info *user_info = NULL; const struct mail_user_settings *user_set; const char *const *userdb_fields, *error; struct auth_user_reply reply; @@ -1242,9 +1242,11 @@ mail_storage_service_lookup_real(struct mail_storage_service_ctx *ctx, mail_storage_service_seteuid_root(); } - if (mail_storage_service_read_settings(ctx, input, user_pool, - &user_info, &set_parser, - error_r) < 0) { + if (input->unexpanded_set_parser != NULL) + set_parser = input->unexpanded_set_parser; + else if (mail_storage_service_read_settings(ctx, input, user_pool, + &user_info, &set_parser, + error_r) < 0) { if (ctx->config_permission_denied) { /* just restart and maybe next time we will open the config socket before dropping privileges */ diff --git a/src/lib-storage/mail-storage-service.h b/src/lib-storage/mail-storage-service.h index 31508e80ed..29a6f7d1cc 100644 --- a/src/lib-storage/mail-storage-service.h +++ b/src/lib-storage/mail-storage-service.h @@ -60,6 +60,9 @@ struct mail_storage_service_input { const char *forward_fields; + /* Use this settings parser instead of looking it up. */ + struct setting_parser_context *unexpanded_set_parser; + /* Override specified global flags */ enum mail_storage_service_flags flags_override_add; enum mail_storage_service_flags flags_override_remove;