]> 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)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Fri, 7 Jul 2017 06:59:08 +0000 (09:59 +0300)
src/plugins/virtual/virtual-sync.c

index 6096efada0a9b668998e231c992b485f98e01626..c0b41361e5f83901e7143a8c5e464904e79db3f9 100644 (file)
@@ -312,6 +312,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);