]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Add mail_storage_service_input.unexpanded_set_parser
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 12 Jan 2023 15:17:29 +0000 (17:17 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Fri, 13 Jan 2023 12:16:26 +0000 (12:16 +0000)
src/lib-storage/mail-storage-service.c
src/lib-storage/mail-storage-service.h

index 270e8eb27c176b4ac9222255a672943d52327c0f..11b2fadae7af69a633701b9c5261e623a67db1db 100644 (file)
@@ -1258,8 +1258,10 @@ mail_storage_service_lookup_real(struct mail_storage_service_ctx *ctx,
                mail_storage_service_seteuid_root();
        }
 
-       if (mail_storage_service_read_settings(ctx, input,
-                                              &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,
+                                                   &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 */
index 05899a2e82c783175dcd11c89417b7a7765208ec..fa2055a0b7eb666d684637414dc4dfc69ec86d70 100644 (file)
@@ -60,6 +60,9 @@ struct mail_storage_service_input {
 
        const char *const *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;