From 4d18b8f0eb634accd9047ab2a0ba79e7b8231c20 Mon Sep 17 00:00:00 2001 From: Vincent Kenbeek Date: Wed, 10 Jul 2024 11:19:41 +0200 Subject: [PATCH] lib-settings, config: Differentiate between doveconf and config binaries --- src/config/doveconf.c | 2 +- src/config/main.c | 2 +- src/lib-master/master-service-settings.c | 2 +- src/lib-settings/settings-parser.c | 10 +++++----- src/lib-settings/settings-parser.h | 10 ++++++++-- src/lib-ssl-iostream/ssl-settings.c | 2 +- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/config/doveconf.c b/src/config/doveconf.c index 70466bf789..1449c8a4ed 100644 --- a/src/config/doveconf.c +++ b/src/config/doveconf.c @@ -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) { diff --git a/src/config/main.c b/src/config/main.c index 0c3c4d3bd4..c632999c76 100644 --- a/src/config/main.c +++ b/src/config/main.c @@ -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(); diff --git a/src/lib-master/master-service-settings.c b/src/lib-master/master-service-settings.c index ffcb077c8e..bae0b54252 100644 --- a/src/lib-master/master-service-settings.c +++ b/src/lib-master/master-service-settings.c @@ -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; diff --git a/src/lib-settings/settings-parser.c b/src/lib-settings/settings-parser.c index 9a61b5edc8..05115500db 100644 --- a/src/lib-settings/settings-parser.c +++ b/src/lib-settings/settings-parser.c @@ -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; } diff --git a/src/lib-settings/settings-parser.h b/src/lib-settings/settings-parser.h index 1fe7c8dd91..fda448392b 100644 --- a/src/lib-settings/settings-parser.h +++ b/src/lib-settings/settings-parser.h @@ -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 diff --git a/src/lib-ssl-iostream/ssl-settings.c b/src/lib-ssl-iostream/ssl-settings.c index 0fd7c89ca5..52c68ae78a 100644 --- a/src/lib-ssl-iostream/ssl-settings.c +++ b/src/lib-ssl-iostream/ssl-settings.c @@ -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 " -- 2.47.3