]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
virtual: Fix highest_mailbox_id if it's wrong
authorAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 3 Jul 2017 10:53:31 +0000 (13:53 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 18 Jul 2017 10:42:19 +0000 (13:42 +0300)
src/plugins/virtual/virtual-sync.c

index ab58e5dcbe74617313cf3eb42bd819306d2bb2a7..df7949820d022f07511393a6bb1dd51874234ff9 100644 (file)
@@ -311,6 +311,14 @@ static void virtual_sync_ext_header_rewrite(struct virtual_sync_context *ctx)
 
                mailbox_pos += sizeof(mailbox);
                name_pos += mailbox.name_len;
+
+               /* repair the value */
+               if (ctx->mbox->highest_mailbox_id < mailbox.id)
+                       ctx->mbox->highest_mailbox_id = mailbox.id;
+       }
+       if (ctx->mbox->highest_mailbox_id != ext_hdr.highest_mailbox_id) {
+               ext_hdr.highest_mailbox_id = ctx->mbox->highest_mailbox_id;
+               buffer_write(buf, 0, &ext_hdr, sizeof(ext_hdr));
        }
        i_assert(buf->used == name_pos);