]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imap: Unconditionally advertise SPECIAL-USE capability
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 6 Mar 2025 12:26:49 +0000 (14:26 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Mar 2025 13:01:57 +0000 (13:01 +0000)
Clients should be able to handle a LIST reply doesn't return any special-use
flags, even if the capability is returned.

The removal is mainly to avoid rather costly checks with the new
configuration code.

src/imap/imap-client.c
src/imap/imap-settings.c
src/lib-storage/mail-user.c

index b21ede6cee73484a7f69b6d27249da4c22cee884..5d1bd44883da184c37ef398918d5ff41b0256b5a 100644 (file)
@@ -179,10 +179,6 @@ struct client *client_create(int fd_in, int fd_out,
        }
        if (!set->imap_metadata || !have_mailbox_attribute_dict)
                imap_unset_capability(set_instance, "METADATA");
-       /* Advertise SPECIAL-USE only if there are actually some
-          SPECIAL-USE flags in mailbox configuration. */
-       if (!user->have_special_use_mailboxes)
-               imap_unset_capability(set_instance, "SPECIAL-USE");
        if (!client->set->mail_utf8_extensions)
                imap_unset_capability(set_instance, "UTF8=ACCEPT");
 
index ed836016fefa1d56d17ff6f0e66df5f93f3f797f..2e5a7d8996c955039124d5e07cdc3a2edbb2ca48 100644 (file)
@@ -155,6 +155,7 @@ static const struct setting_keyvalue imap_default_settings_keyvalue[] = {
        { "service/imap/imap_capability/SNIPPET=FUZZY", "yes" },
        { "service/imap/imap_capability/PREVIEW=FUZZY", "yes" },
        { "service/imap/imap_capability/PREVIEW", "yes" },
+       { "service/imap/imap_capability/SPECIAL-USE", "yes" },
        { "service/imap/imap_capability/STATUS=SIZE", "yes" },
        { "service/imap/imap_capability/SAVEDATE", "yes" },
        { "service/imap/imap_capability/COMPRESS=DEFLATE", "yes" },
index 6c24c843754c6c675f6a7959adb10dbae202f31e..30f19320c5af2b93f43e80d9283b8916f59fe7e8 100644 (file)
@@ -111,9 +111,6 @@ int mail_user_init(struct mail_user *user, const char **error_r)
 
        i_assert(!user->initialized);
 
-       /* We need to figure out early if we should advertise SPECIAL-USE IMAP
-          capability. The CAPABILITY reply is sent to client before
-          mail_namespaces_init() is called, so it needs to be done here. */
        if (settings_get(user->event, &mail_storage_setting_parser_info, 0,
                         &user->_mail_set, &error) < 0 ||
            !mail_user_settings_update_special_use(user, user->_mail_set, &error))