]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-settings, config: Differentiate between doveconf and config binaries
authorVincent Kenbeek <vincent.kenbeek@open-xchange.com>
Wed, 10 Jul 2024 09:19:41 +0000 (11:19 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:39:59 +0000 (10:39 +0200)
src/config/doveconf.c
src/config/main.c
src/lib-master/master-service-settings.c
src/lib-settings/settings-parser.c
src/lib-settings/settings-parser.h
src/lib-ssl-iostream/ssl-settings.c

index 70466bf7893c22444fb9495e23047a686814e4de..1449c8a4edbff8d2228375416cb9814167de790c 100644 (file)
@@ -1092,7 +1092,7 @@ int main(int argc, char *argv[])
                fflush(stdout);
        }
        master_service_init_finish(master_service);
-       set_config_binary(TRUE);
+       settings_set_config_binary(SETTINGS_BINARY_DOVECONF);
        config_parse_load_modules();
 
        if (print_banners) {
index 0c3c4d3bd4a6ebdf75ea6109fb0e07552c0ac891..c632999c767527cef04dadb032bdd5e638d91bf6 100644 (file)
@@ -29,7 +29,7 @@ int main(int argc, char *argv[])
        restrict_access_by_env(RESTRICT_ACCESS_FLAG_ALLOW_ROOT, NULL);
        restrict_access_allow_coredumps(TRUE);
 
-       set_config_binary(TRUE);
+       settings_set_config_binary(SETTINGS_BINARY_CONFIG);
        config_parse_load_modules();
 
        config_connections_init();
index ffcb077c8ed9e9eb9a8063ce844bdfe62a390c8c..bae0b54252c2dd0a0286024a0c89a1a92db64a30 100644 (file)
@@ -202,7 +202,7 @@ master_service_settings_check(void *_set, pool_t pool ATTR_UNUSED,
                return FALSE;
        /* doveconf / config checks dovecot_storage_version separately.
           This check shouldn't fail e.g. "doveconf -d" command. */
-       if (!is_config_binary() &&
+       if (settings_get_config_binary() == SETTINGS_BINARY_OTHER &&
            !storage_version_check(set->dovecot_storage_version, error_r))
                return FALSE;
        return TRUE;
index 9a61b5edc8ea4f9f5228eafebf33fa27a2d78cd5..05115500dbd1eb3305d1e613ee5e1abe5f3a33b0 100644 (file)
@@ -1163,15 +1163,15 @@ const char *settings_section_unescape(const char *name)
        return str_c(str);
 }
 
-static bool config_binary = FALSE;
+static enum settings_binary config_binary = SETTINGS_BINARY_OTHER;
 
-bool is_config_binary(void)
+void settings_set_config_binary(enum settings_binary binary)
 {
-       return config_binary;
+       config_binary = binary;
 }
 
-void set_config_binary(bool value)
+enum settings_binary settings_get_config_binary(void)
 {
-       config_binary = value;
+       return config_binary;
 }
 
index 1fe7c8dd9149d62a218ef92cac44f664210d39dc..fda448392b58899b9412525ac1a5beee1480d06e 100644 (file)
@@ -173,6 +173,12 @@ enum settings_parser_flags {
        SETTINGS_PARSER_FLAG_INSERT_FILTERS             = 0x04,
 };
 
+enum settings_binary {
+       SETTINGS_BINARY_OTHER,
+       SETTINGS_BINARY_CONFIG,
+       SETTINGS_BINARY_DOVECONF
+};
+
 struct setting_parser_context;
 
 /* If a string setting value has this pointer, it means the setting isn't
@@ -285,7 +291,7 @@ static inline bool settings_value_is_unlimited(const char *value)
                strcmp(value, SET_VALUE_INFINITE) == 0;
 }
 
-void set_config_binary(bool value);
-bool is_config_binary(void);
+void settings_set_config_binary(enum settings_binary binary);
+enum settings_binary settings_get_config_binary(void);
 
 #endif
index 0fd7c89ca529fdb7df22b519f1df784dbe7dd707..52c68ae78a00a7545861b1ad7a829f035280a292 100644 (file)
@@ -115,7 +115,7 @@ ssl_settings_check(void *_set, pool_t pool ATTR_UNUSED,
 {
        struct ssl_settings *set = _set;
 
-       if (is_config_binary()) T_BEGIN {
+       if (settings_get_config_binary() != SETTINGS_BINARY_OTHER) T_BEGIN {
                const char *proto = t_str_ucase(set->ssl_min_protocol);
                if (strstr(proto, "ANY") != NULL)
                        i_warning("ssl_min_protocol=ANY is used - This is "