]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imap: Use client_add_capability() for adding all dynamic capabilities
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 24 Apr 2017 15:51:53 +0000 (18:51 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 24 Apr 2017 15:55:17 +0000 (18:55 +0300)
src/imap/imap-client.c

index 26fc621041b4809a54b41e4e6ff856b597873e8f..4131abea13d4a9e845e27d062cdeca45bbeacf41 100644 (file)
@@ -92,7 +92,6 @@ struct client *client_create(int fd_in, int fd_out, const char *session_id,
        struct client *client;
        const char *ident;
        pool_t pool;
-       bool explicit_capability = FALSE;
 
        /* always use nonblocking I/O */
        net_set_nonblock(fd_in, TRUE);
@@ -143,31 +142,28 @@ struct client *client_create(int fd_in, int fd_out, const char *session_id,
        if (*set->imap_capability == '\0')
                str_append(client->capability_string, CAPABILITY_STRING);
        else if (*set->imap_capability != '+') {
-               explicit_capability = TRUE;
                str_append(client->capability_string, set->imap_capability);
        } else {
                str_append(client->capability_string, CAPABILITY_STRING);
                str_append_c(client->capability_string, ' ');
                str_append(client->capability_string, set->imap_capability + 1);
        }
-       if (!explicit_capability) {
-               if (client->set->imap_literal_minus)
-                       str_append(client->capability_string, " LITERAL-");
-               else
-                       str_append(client->capability_string, " LITERAL+");
-       }
-       if (user->fuzzy_search && !explicit_capability) {
+       if (client->set->imap_literal_minus)
+               client_add_capability(client, "LITERAL-");
+       else
+               client_add_capability(client, "LITERAL+");
+       if (user->fuzzy_search) {
                /* Enable FUZZY capability only when it actually has
                   a chance of working */
-               str_append(client->capability_string, " SEARCH=FUZZY");
+               client_add_capability(client, "SEARCH=FUZZY");
        }
 
        mail_set = mail_user_set_get_storage_set(user);
-       if (mail_set->mailbox_list_index && !explicit_capability) {
+       if (mail_set->mailbox_list_index) {
                /* NOTIFY is enabled only when mailbox list indexes are
                   enabled, although even that doesn't necessarily guarantee
                   it always */
-               str_append(client->capability_string, " NOTIFY");
+               client_add_capability(client, "NOTIFY");
        }
 
        if (*set->imap_urlauth_host != '\0' &&
@@ -175,18 +171,17 @@ struct client *client_create(int fd_in, int fd_out, const char *session_id,
                /* Enable URLAUTH capability only when dict is
                   configured correctly */
                client_init_urlauth(client);
-               if (!explicit_capability)
-                       str_append(client->capability_string, " URLAUTH URLAUTH=BINARY");
+               client_add_capability(client, "URLAUTH");
+               client_add_capability(client, "URLAUTH=BINARY");
        }
        if (set->imap_metadata && *mail_set->mail_attribute_dict != '\0') {
                client->imap_metadata_enabled = TRUE;
-               if (!explicit_capability)
-                       str_append(client->capability_string, " METADATA");
+               client_add_capability(client, "METADATA");
        }
-       if (!explicit_capability && user_has_special_use_mailboxes(user)) {
+       if (user_has_special_use_mailboxes(user)) {
                /* Advertise SPECIAL-USE only if there are actually some
                   SPECIAL-USE flags in mailbox configuration. */
-               str_append(client->capability_string, " SPECIAL-USE");
+               client_add_capability(client, "SPECIAL-USE");
        }
 
        ident = mail_user_get_anvil_userip_ident(client->user);