]> dgit.raspbian.org Git - dovecot.git/commitdiff
[PATCH 10/12] lib-master: Move config_version_find() from src/config/config-parser.c
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 1 May 2026 16:56:21 +0000 (16:56 +0000)
committerNoah Meyerhans <noahm@debian.org>
Wed, 16 Sep 2026 19:06:35 +0000 (15:06 -0400)
Rename to dovecot_config_version_find() and expose it via
master-service-settings.h so non-config callers (e.g. the upcoming
dovecot_storage_version validation in master_service_settings_check())
can share the same supported-versions list. No behaviour change.

Gbp-Pq: Name 0010-lib-master-Move-config_version_find-from-src-config-.patch

src/config/config-parser.c
src/lib-master/master-service-settings.c
src/lib-master/master-service-settings.h

index 7e9db599f49a17761374c8ea4e3a0d0c16bca65c..61dbebabacff4688b92a7310bc881a6f5e6486c4 100644 (file)
@@ -2580,30 +2580,6 @@ config_parser_check_warnings(struct config_parser_context *ctx, const char *key,
        hash_table_insert(ctx->seen_settings, path, first_pos);
 }
 
-static bool config_version_find(const char *version, const char **error_r)
-{
-       const char *const supported_versions[] = {
-#ifdef DOVECOT_PRO_EDITION
-               "3.1.0",
-#else
-               "2.4.0",
-#endif
-               NULL
-       };
-       /* FIXME: implement full version checking later */
-       if (!str_array_find(supported_versions, version) &&
-           strcmp(DOVECOT_CONFIG_VERSION, version) != 0) {
-               *error_r = t_strdup_printf(
-                       "Currently supported versions are: %s%s",
-                       t_strarray_join(supported_versions, " "),
-                       str_array_find(supported_versions,
-                                      DOVECOT_CONFIG_VERSION) ? "" :
-                       t_strdup_printf(" %s", DOVECOT_CONFIG_VERSION));
-               return FALSE;
-       }
-       return TRUE;
-}
-
 static bool
 dovecot_config_version_equals(struct config_parser_context *ctx, const char *value)
 {
@@ -2644,7 +2620,7 @@ static bool config_parser_get_version(struct config_parser_context *ctx,
 
        if (line->type != CONFIG_LINE_TYPE_KEYVALUE)
                ctx->error = "Invalid dovecot_config_version: value is not a string";
-       else if (!config_version_find(line->value, &error)) {
+       else if (!dovecot_config_version_find(line->value, &error)) {
                ctx->error = p_strdup_printf(ctx->pool,
                        "Invalid dovecot_config_version: %s", error);
        } else if (strcmp(line->value, CONFIG_VERSION_GIT) == 0) {
index 399d753ad75aee2a828612ee9265d70d57a023fc..71438c0c4f395f11998affbdc93ed525eac5eefa 100644 (file)
@@ -146,6 +146,44 @@ master_service_set_process_shutdown_filter_wrapper(struct event_filter *filter)
        master_service_set_process_shutdown_filter(master_service, filter);
 }
 
+/* List of dovecot_config_versions accepted at parse / startup time.
+   dovecot_storage_version accepts these as well, plus an extra legacy set
+   defined in storage_version_check(). */
+static const char *const dovecot_config_supported_versions[] = {
+#ifdef DOVECOT_PRO_EDITION
+       "3.1.0",
+       "3.1.1",
+       "3.1.2",
+       "3.1.3",
+       "3.1.4",
+       "3.1.5",
+       "3.2.0",
+#else
+       "2.4.0",
+       "2.4.1",
+       "2.4.2",
+       "2.4.3",
+       "2.4.4",
+#endif
+       NULL
+};
+
+bool dovecot_config_version_find(const char *version, const char **error_r)
+{
+       /* FIXME: implement full version checking later */
+       if (!str_array_find(dovecot_config_supported_versions, version) &&
+           strcmp(DOVECOT_CONFIG_VERSION, version) != 0) {
+               *error_r = t_strdup_printf(
+                       "Currently supported versions are: %s%s",
+                       t_strarray_join(dovecot_config_supported_versions, " "),
+                       str_array_find(dovecot_config_supported_versions,
+                                      DOVECOT_CONFIG_VERSION) ? "" :
+                       t_strdup_printf(" %s", DOVECOT_CONFIG_VERSION));
+               return FALSE;
+       }
+       return TRUE;
+}
+
 static bool storage_version_check(const char *version, const char **error_r)
 {
 #define STORAGE_MIN_VERSION "2.3.0"
index d37870030fe436c4cc241f73fc9b02f57d6109a3..33d642d6368b36ebc6bd7cac2dbe61c6bd06f615 100644 (file)
@@ -95,4 +95,9 @@ master_service_get_service_settings(struct master_service *service);
 const char *
 master_service_get_import_environment_keyvals(struct master_service *service);
 
+/* Returns TRUE if version is in the list of dovecot_config_version values
+   accepted by this build. Sets *error_r to a descriptive list of supported
+   versions on FALSE. */
+bool dovecot_config_version_find(const char *version, const char **error_r);
+
 #endif