]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-settings, config: Add SETTINGS_EVENT_NO_EXPAND for ext_check_func() callbacks
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Sun, 2 Mar 2025 12:28:07 +0000 (14:28 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 5 Mar 2025 18:20:36 +0000 (20:20 +0200)
src/config/config-parser.c
src/lib-settings/settings-parser.h

index 2c1a0fb25e4d49eb0be2f8a6d2a577c9e123c8be..c83ef89d575e0e1563a9f3169984680c439e5083 100644 (file)
@@ -1456,6 +1456,8 @@ config_filter_parser_check(struct config_parser_context *ctx,
        bool ok;
 
        event = event_create(event);
+       if (!ctx->expand_values)
+               event_add_str(event, SETTINGS_EVENT_NO_EXPAND, "yes");
        for (filter = &filter_parser->filter; filter != NULL; filter = filter->parent) {
                if (filter->protocol != NULL)
                        event_add_str(event, "protocol", filter->protocol);
index 138535f9f8dd68486261b08246292887c71f51fd..ee0f49c3607733caf44f48170a95a2723ae2bcc0 100644 (file)
@@ -200,6 +200,11 @@ struct setting_parser_context;
    this to not give early errors when the variable value isn't known. */
 extern const char *set_value_unknown;
 
+/* This is set for ext_check_func(event) when config binary checking settings.
+   In this case for example %variables aren't expanded, so ext_check_func()
+   shouldn't fail if it does further settings_get*() calls that fail. */
+#define SETTINGS_EVENT_NO_EXPAND "settings_event_no_expand"
+
 struct setting_parser_context *
 settings_parser_init(pool_t set_pool, const struct setting_parser_info *root,
                     enum settings_parser_flags flags);