]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Fix IMAP SPECIAL-USE capability when using global mailbox settings
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 15 Aug 2024 07:59:57 +0000 (10:59 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:39:59 +0000 (10:39 +0200)
src/lib-storage/mail-storage-settings.c

index 897ca8798709cd99523d41bb714c9fc444401ca7..8733ba5d6de5241443e4a9a7a277a0fafd44db7f 100644 (file)
@@ -445,7 +445,16 @@ bool mail_user_settings_update_special_use(struct mail_user *user,
        const struct mail_namespace_settings *ns;
        const char *ns_name, *error;
 
-       if (!array_is_created(&set->namespaces))
+       /* Check if there are any global mailbox { .. } settings */
+       if (settings_get(user->event, &mail_namespace_setting_parser_info,
+                        SETTINGS_GET_FLAG_FAKE_EXPAND, &ns, error_r) < 0)
+               return FALSE;
+       if (ns->parsed_have_special_use_mailboxes && !ns->disabled)
+               user->have_special_use_mailboxes = TRUE;
+       settings_free(ns);
+
+       /* Check mailbox { .. } settings inside namespace { .. } */
+       if (!array_is_created(&set->namespaces) || user->have_special_use_mailboxes)
                return TRUE;
 
        array_foreach_elem(&set->namespaces, ns_name) {