From: Timo Sirainen Date: Thu, 6 Mar 2025 12:26:49 +0000 (+0200) Subject: imap: Unconditionally advertise SPECIAL-USE capability X-Git-Tag: 2.4.1~36 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c644445bac9e273c7b48be4285aae27f8e31c50b;p=thirdparty%2Fdovecot%2Fcore.git imap: Unconditionally advertise SPECIAL-USE capability 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. --- diff --git a/src/imap/imap-client.c b/src/imap/imap-client.c index b21ede6cee..5d1bd44883 100644 --- a/src/imap/imap-client.c +++ b/src/imap/imap-client.c @@ -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"); diff --git a/src/imap/imap-settings.c b/src/imap/imap-settings.c index ed836016fe..2e5a7d8996 100644 --- a/src/imap/imap-settings.c +++ b/src/imap/imap-settings.c @@ -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" }, diff --git a/src/lib-storage/mail-user.c b/src/lib-storage/mail-user.c index 6c24c84375..30f19320c5 100644 --- a/src/lib-storage/mail-user.c +++ b/src/lib-storage/mail-user.c @@ -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))