From: Timo Sirainen Date: Thu, 19 Dec 2013 19:25:08 +0000 (+0200) Subject: imap: if mailbox has non-permanent modseqs, never send HIGHESTMODSEQ/MODSEQs. X-Git-Tag: 2.2.10~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59714981ae172b5113be7ca9b8be518b759fc86d;p=thirdparty%2Fdovecot%2Fcore.git imap: if mailbox has non-permanent modseqs, never send HIGHESTMODSEQ/MODSEQs. --- diff --git a/src/imap/cmd-select.c b/src/imap/cmd-select.c index f36dbf8b93..260e13c724 100644 --- a/src/imap/cmd-select.c +++ b/src/imap/cmd-select.c @@ -346,6 +346,7 @@ select_open(struct imap_select_context *ctx, const char *mailbox, bool readonly) t_strdup_printf("* OK [UIDNEXT %u] Predicted next UID", status.uidnext)); + client->nonpermanent_modseqs = status.nonpermanent_modseqs; if (status.nonpermanent_modseqs) { client_send_line(client, "* OK [NOMODSEQ] No permanent modsequences"); diff --git a/src/imap/imap-client.h b/src/imap/imap-client.h index cab11287bd..1021d86416 100644 --- a/src/imap/imap-client.h +++ b/src/imap/imap-client.h @@ -165,6 +165,7 @@ struct client { unsigned int notify_count_changes:1; unsigned int notify_flag_changes:1; unsigned int imap_metadata_enabled:1; + unsigned int nonpermanent_modseqs:1; }; struct imap_module_register { diff --git a/src/imap/imap-sync.c b/src/imap/imap-sync.c index 9f6b8a9bdc..751d2b1c63 100644 --- a/src/imap/imap-sync.c +++ b/src/imap/imap-sync.c @@ -374,7 +374,8 @@ int imap_sync_deinit(struct imap_sync_context *ctx, ret = imap_sync_finish(ctx, TRUE); imap_client_notify_finished(ctx->client); - if ((ctx->client->enabled_features & MAILBOX_FEATURE_QRESYNC) != 0) + if ((ctx->client->enabled_features & MAILBOX_FEATURE_QRESYNC) != 0 && + !ctx->client->nonpermanent_modseqs) imap_sync_send_highestmodseq(ctx, sync_cmd); if (array_is_created(&ctx->search_removes)) { @@ -415,7 +416,8 @@ static int imap_sync_send_flags(struct imap_sync_context *ctx, string_t *str) if (ctx->imap_flags & IMAP_SYNC_FLAG_SEND_UID) str_printfa(str, "UID %u ", ctx->mail->uid); if ((mailbox_get_enabled_features(ctx->box) & - MAILBOX_FEATURE_CONDSTORE) != 0) { + MAILBOX_FEATURE_CONDSTORE) != 0 && + !ctx->client->nonpermanent_modseqs) { imap_sync_add_modseq(ctx, str); str_append_c(str, ' '); }