]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
config: Remove separate ordering for default service settings
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 4 Nov 2024 12:11:27 +0000 (14:11 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:00 +0000 (10:40 +0200)
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.

src/config/config-parser.c
src/config/config-parser.h

index 587891df469b7faade14927fe4d7bab2df36ca04..4526064ce654630545bcba491ddf4d4843cbde2c 100644 (file)
@@ -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,
index 26c65050adbaadc433aef471910541f0b0c9f5e3..53c2e53def32f5d7528f6919ab9f08168ac9fe2b 100644 (file)
@@ -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;