]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
virtual: Fix recent flag updates
authorAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 27 Jun 2017 11:19:16 +0000 (14:19 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 18 Jul 2017 10:42:19 +0000 (13:42 +0300)
View must be updated before looking up seqs

src/plugins/virtual/virtual-sync.c

index 44b1a79d1b2ac56e588424b21fd886d1d39ffd01..1ca8557e8d79d292524a3c523e3649c4c58f4818 100644 (file)
@@ -444,8 +444,11 @@ static void virtual_sync_index_finish(struct virtual_sync_context *ctx)
 {
        struct mailbox *box = &ctx->mbox->box;
        const struct mail_index_header *hdr;
+       struct mail_index_view *view;
        uint32_t seq1, seq2;
 
+       view = mail_index_transaction_open_updated_view(ctx->trans);
+
        hdr = mail_index_get_header(ctx->sync_view);
        if (hdr->uid_validity != 0)
                ctx->uid_validity = hdr->uid_validity;
@@ -453,11 +456,14 @@ static void virtual_sync_index_finish(struct virtual_sync_context *ctx)
                virtual_sync_set_uidvalidity(ctx);
 
        /* mark the newly seen messages as recent */
-       if (mail_index_lookup_seq_range(ctx->sync_view, hdr->first_recent_uid,
-                                       hdr->next_uid, &seq1, &seq2)) {
-               mailbox_recent_flags_set_seqs(&ctx->mbox->box, ctx->sync_view,
+       if (mail_index_lookup_seq_range(view, hdr->first_recent_uid,
+                                       (uint32_t)-1, &seq1, &seq2)) {
+               mailbox_recent_flags_set_seqs(&ctx->mbox->box, view,
                                              seq1, seq2);
        }
+
+       mail_index_view_close(&view);
+
        if (ctx->ext_header_rewrite) {
                /* entire mailbox list needs to be rewritten */
                virtual_sync_ext_header_rewrite(ctx);