]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imap: Disable RECENT replies when IMAP4REV2 is enabled
authorMarkus Valentin <markus.valentin@open-xchange.com>
Mon, 7 Apr 2025 12:24:21 +0000 (14:24 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 12 May 2025 10:40:58 +0000 (10:40 +0000)
src/imap/cmd-select.c
src/imap/imap-state.c
src/imap/imap-status.c
src/imap/imap-sync.c

index f11449ce2858de2ed5432af229d96a02e04743b0..485edac4e0d62a6db1eb50e99ac64a44e9270ce8 100644 (file)
@@ -314,8 +314,11 @@ select_open(struct imap_select_context *ctx, const char *mailbox, bool readonly)
 
        client_send_line(client,
                t_strdup_printf("* %u EXISTS", status.messages));
-       client_send_line(client,
-               t_strdup_printf("* %u RECENT", status.recent));
+       if ((client_enabled_mailbox_features(client) &
+           MAILBOX_FEATURE_IMAP4REV2) == 0) {
+               client_send_line(client,
+                               t_strdup_printf("* %u RECENT", status.recent));
+       }
 
        if (status.first_unseen_seq != 0) {
                client_send_line(client,
index 3736296bea05466ac38bb5b24a927c5b3a66f2ee..225f106c2ab691a08df3dcfe07291117139cf168 100644 (file)
@@ -654,8 +654,9 @@ import_state_mailbox_open(struct client *client,
                        (state->messages - expunge_count);
                client_send_line(client,
                        t_strdup_printf("* %u EXISTS", client->messages_count));
-               client_send_line(client,
-                       t_strdup_printf("* %u RECENT", client->recent_count));
+               if ((client_enabled_mailbox_features(client) & MAILBOX_FEATURE_IMAP4REV2) == 0)
+                       client_send_line(client,
+                               t_strdup_printf("* %u RECENT", client->recent_count));
        }
 
        if (array_count(status.keywords) == state->keywords_count &&
index bf0ca57f636ef1f51c8207223a3afee88de7a8f6..5bf6116ad0bf19035e67dcd97a850f4669f2a262 100644 (file)
@@ -138,7 +138,8 @@ int imap_status_send(struct client *client, const char *mailbox_mutf7,
        prefix_len = str_len(str);
        if (HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_MESSAGES))
                str_printfa(str, "MESSAGES %u ", status->messages);
-       if (HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_RECENT))
+       if ((client_enabled_mailbox_features(client) & MAILBOX_FEATURE_IMAP4REV2) == 0 &&
+           HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_RECENT))
                str_printfa(str, "RECENT %u ", status->recent);
        if (HAS_ALL_BITS(items->flags, IMAP_STATUS_ITEM_UIDNEXT))
                str_printfa(str, "UIDNEXT %u ", status->uidnext);
index b9990393e80dee9ec1b81069aa1c2ad8a1e8b5ed..5a138f6e85973731ff51decca4ea1ec7cfe2c904 100644 (file)
@@ -306,7 +306,8 @@ static int imap_sync_finish(struct imap_sync_context *ctx, bool aborting)
                        ctx->have_new_mails = TRUE;
                }
                if (ctx->status.recent != client->recent_count &&
-                   client->notify_count_changes) {
+                   client->notify_count_changes &&
+                   (client_enabled_mailbox_features(client) & MAILBOX_FEATURE_IMAP4REV2) == 0) {
                        client_send_line(client,
                                t_strdup_printf("* %u RECENT", ctx->status.recent));
                }