changeset 22348:29d7def3a141

virtual: Fix highest_mailbox_id if it's wrong
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Mon, 03 Jul 2017 13:53:31 +0300
parents df67c602f267
children 942ade508602
files src/plugins/virtual/virtual-sync.c
diffstat 1 files changed, 8 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/virtual/virtual-sync.c	Mon Jul 03 13:25:35 2017 +0300
+++ b/src/plugins/virtual/virtual-sync.c	Mon Jul 03 13:53:31 2017 +0300
@@ -311,6 +311,14 @@
 
 		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);