From: Timo Sirainen Date: Mon, 4 Nov 2024 12:11:27 +0000 (+0200) Subject: config: Remove separate ordering for default service settings X-Git-Tag: 2.4.0~297 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=20e48cc4d32fe4a9ee886da9aba160098ce22b45;p=thirdparty%2Fdovecot%2Fcore.git config: Remove separate ordering for default service settings This changes e.g. a global "service_process_limit = N" to override it for all services, unless they have an explicit service { process_limit = M } in the config file. This change simplifies the following changes and removes the special handling of global service settings. --- diff --git a/src/config/config-parser.c b/src/config/config-parser.c index 587891df46..4526064ce6 100644 --- a/src/config/config-parser.c +++ b/src/config/config-parser.c @@ -109,7 +109,7 @@ static struct config_section_stack * config_parser_add_filter_array(struct config_parser_context *ctx, const char *filter_key, const char *name) { - config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_SERVICE_DEFAULTS); + config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_DEFAULTS); if (config_apply_exact_line(ctx, NULL, filter_key, name) < 0) { i_panic("Failed to add %s %s: %s", filter_key, name, ctx->error); @@ -122,6 +122,7 @@ config_parser_add_filter_array(struct config_parser_context *ctx, .filter_name = p_strdup_printf(ctx->pool, "%s/%s", filter_key, name), .filter_name_array = TRUE, + .default_settings = TRUE, }; section->is_filter = TRUE; section->filter_parser = @@ -141,7 +142,7 @@ config_parser_add_service_default_struct(struct config_parser_context *ctx, const struct setting_parser_info *info = all_infos[service_info_idx]; string_t *value_str = t_str_new(64); - config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_SERVICE_DEFAULTS); + config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_DEFAULTS); for (unsigned int i = 0; info->defines[i].key != NULL; i++) { const void *value = CONST_PTR_OFFSET(default_set, info->defines[i].offset); @@ -185,6 +186,7 @@ config_parser_add_service_default_keyvalues(struct config_parser_context *ctx, struct config_filter filter = { .filter_name = settings_section_unescape(escaped_key), .filter_name_array = TRUE, + .default_settings = TRUE, .parent = &orig_filter_parser->filter, }; struct config_filter_parser *filter_parser = @@ -201,7 +203,7 @@ config_parser_add_service_default_keyvalues(struct config_parser_context *ctx, key = p + 1; } - config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_SERVICE_DEFAULTS); + config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_DEFAULTS); if (config_apply_line(ctx, key, defaults[i].value, NULL) < 0) { i_panic("Failed to add default setting %s=%s for service %s: %s", defaults[i].key, defaults[i].value, diff --git a/src/config/config-parser.h b/src/config/config-parser.h index 26c65050ad..53c2e53def 100644 --- a/src/config/config-parser.h +++ b/src/config/config-parser.h @@ -9,10 +9,8 @@ /* change_counter used for default settings created internally */ #define CONFIG_PARSER_CHANGE_DEFAULTS 1 -/* change_counter used for default service settings created internally */ -#define CONFIG_PARSER_CHANGE_SERVICE_DEFAULTS 2 /* change_counter used for settings changed by configuration file */ -#define CONFIG_PARSER_CHANGE_EXPLICIT 3 +#define CONFIG_PARSER_CHANGE_EXPLICIT 2 struct config_parsed; struct setting_parser_context;