]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
config: Add config_filters_equal_no_recursion()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 30 Oct 2024 20:45:32 +0000 (22:45 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:00 +0000 (10:40 +0200)
src/config/config-filter.c
src/config/config-filter.h

index 0743577396fae080dd0cf6ec9497c26f59245a0a..f608f28de6507e1e73bba11d1be546d40e3fe8e7 100644 (file)
@@ -94,9 +94,8 @@ bool config_filter_match(const struct config_filter *mask,
        return mask == NULL && filter == NULL;
 }
 
-static bool
-config_filters_equal_without_defaults(const struct config_filter *f1,
-                                     const struct config_filter *f2)
+bool config_filters_equal_no_recursion(const struct config_filter *f1,
+                                      const struct config_filter *f2)
 {
        if (null_strcmp(f1->service, f2->service) != 0)
                return FALSE;
@@ -118,6 +117,15 @@ config_filters_equal_without_defaults(const struct config_filter *f1,
                return FALSE;
        if (f1->filter_name_array != f2->filter_name_array)
                return FALSE;
+       return TRUE;
+}
+
+static bool
+config_filters_equal_without_defaults(const struct config_filter *f1,
+                                     const struct config_filter *f2)
+{
+       if (!config_filters_equal_no_recursion(f1, f2))
+               return FALSE;
        if (f1->parent != NULL || f2->parent != NULL) {
                /* Check the parents' compatibility also. However, it's
                   possible that one of these parents is the empty root filter,
index f35ecc795188064c2f5137a6def5e0af8f5fdd65..7012dd96b4dbd33e9680ea5dffe8c58fa6348751 100644 (file)
@@ -62,6 +62,8 @@ bool config_filter_match(const struct config_filter *mask,
 /* Returns TRUE if two filters are fully equal. */
 bool config_filters_equal(const struct config_filter *f1,
                          const struct config_filter *f2);
+bool config_filters_equal_no_recursion(const struct config_filter *f1,
+                                      const struct config_filter *f2);
 /* Returns TRUE if filter is empty, and it has no parent filters, and it has
    default_settings=FALSE. */
 bool config_filter_is_empty(const struct config_filter *filter);