]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imap: if mailbox has non-permanent modseqs, never send HIGHESTMODSEQ/MODSEQs.
authorTimo Sirainen <tss@iki.fi>
Thu, 19 Dec 2013 19:25:08 +0000 (21:25 +0200)
committerTimo Sirainen <tss@iki.fi>
Thu, 19 Dec 2013 19:25:08 +0000 (21:25 +0200)
src/imap/cmd-select.c
src/imap/imap-client.h
src/imap/imap-sync.c

index f36dbf8b93feb9dc09addb9ab90f83e6d90c5031..260e13c7249b66e4d31b59075a0a9248b8c2b962 100644 (file)
@@ -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");
index cab11287bd4c63ba7197b9c3331bca56712c5b40..1021d86416539eb0bb73709ca9aa22cc8207a96c 100644 (file)
@@ -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 {
index 9f6b8a9bdc33beb3335c3c962f4bf9c56f1f5339..751d2b1c637cd04e3d636407439e6e445baa501c 100644 (file)
@@ -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, ' ');
        }