From: Markus Valentin Date: Mon, 7 Apr 2025 12:24:21 +0000 (+0200) Subject: imap: Disable RECENT replies when IMAP4REV2 is enabled X-Git-Tag: 2.4.2~822 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cdaf9c1e966d8a234ff29d272565729d5c9d37ec;p=thirdparty%2Fdovecot%2Fcore.git imap: Disable RECENT replies when IMAP4REV2 is enabled --- diff --git a/src/imap/cmd-select.c b/src/imap/cmd-select.c index f11449ce28..485edac4e0 100644 --- a/src/imap/cmd-select.c +++ b/src/imap/cmd-select.c @@ -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, diff --git a/src/imap/imap-state.c b/src/imap/imap-state.c index 3736296bea..225f106c2a 100644 --- a/src/imap/imap-state.c +++ b/src/imap/imap-state.c @@ -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 && diff --git a/src/imap/imap-status.c b/src/imap/imap-status.c index bf0ca57f63..5bf6116ad0 100644 --- a/src/imap/imap-status.c +++ b/src/imap/imap-status.c @@ -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); diff --git a/src/imap/imap-sync.c b/src/imap/imap-sync.c index b9990393e8..5a138f6e85 100644 --- a/src/imap/imap-sync.c +++ b/src/imap/imap-sync.c @@ -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)); }