changeset 22353:be6d20b5644f

virtual: If virtual_uid is not assigned skip it We cannot lookup mails with uid 0, so if we see that mail has virtual uid 0, do not attempt to look it up from index, but skip it. Fixes Panic: file mail-index-map.c: line 549 (mail_index_map_lookup_seq_range): assertion failed: (first_uid > 0)
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Thu, 06 Jul 2017 12:40:33 +0300
parents d0c01cdc09c3
children b9a2a6135419
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	Wed Jul 05 15:20:32 2017 +0300
+++ b/src/plugins/virtual/virtual-sync.c	Thu Jul 06 12:40:33 2017 +0300
@@ -566,6 +566,10 @@
 		for (; uid <= uids[i].seq2; uid++, src++) {
 			i_assert(src < rec_count);
 			i_assert(uidmap[src].real_uid == uid);
+			if (uidmap[src].virtual_uid == 0) {
+				/* has not been assigned yet */
+				continue;
+			}
 			if (mail_index_lookup_seq(ctx->sync_view,
 						  uidmap[src].virtual_uid,
 						  &vseq))
@@ -1039,6 +1043,10 @@
 			uidmap = array_idx(&bbox->uids, 0);
 			for (; idx1 <= idx2; idx1++) {
 				vuid = uidmap[idx1].virtual_uid;
+				if (vuid == 0) {
+					/* has not been even assigned yet */
+					continue;
+				}
 				if (!mail_index_lookup_seq(ctx->sync_view,
 							   vuid, &vseq)) {
 					/* expunged by another session,