From: Timo Sirainen Date: Sun, 2 Mar 2025 12:28:07 +0000 (+0200) Subject: lib-settings, config: Add SETTINGS_EVENT_NO_EXPAND for ext_check_func() callbacks X-Git-Tag: 2.4.1~109 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=988431c7859d9ebcc67b27a06cbab85bb087266d;p=thirdparty%2Fdovecot%2Fcore.git lib-settings, config: Add SETTINGS_EVENT_NO_EXPAND for ext_check_func() callbacks --- diff --git a/src/config/config-parser.c b/src/config/config-parser.c index 2c1a0fb25e..c83ef89d57 100644 --- a/src/config/config-parser.c +++ b/src/config/config-parser.c @@ -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); diff --git a/src/lib-settings/settings-parser.h b/src/lib-settings/settings-parser.h index 138535f9f8..ee0f49c360 100644 --- a/src/lib-settings/settings-parser.h +++ b/src/lib-settings/settings-parser.h @@ -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);