From 7e4af98560a21545acbe223a694843e5172f4181 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 19 Jul 2017 13:43:09 +0300 Subject: [PATCH] lib-index: Fix next_uid lookup in open transaction that has appended mails The appended mails were used for returning an updated mail_index_header.next_uid, but only if the mails were assigned UIDs in mail_index_append(). It should have updated the next_uid also after mail_index_append_finish_uids() was used to assign the UIDs. This fixes setting first_recent_uid correctly for virtual mailboxes when the sync finds new mails. Avoids multiple sessions from getting \Recent flags for the same mails. --- src/lib-index/mail-index-transaction-update.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib-index/mail-index-transaction-update.c b/src/lib-index/mail-index-transaction-update.c index 56534d1f6b..025bb8e9ba 100644 --- a/src/lib-index/mail-index-transaction-update.c +++ b/src/lib-index/mail-index-transaction-update.c @@ -223,6 +223,8 @@ void mail_index_append_finish_uids(struct mail_index_transaction *t, if (recs[i].uid == 0 || recs[i].uid < first_uid) { i_assert(next_uid < (uint32_t)-1); recs[i].uid = next_uid++; + if (t->highest_append_uid < recs[i].uid) + t->highest_append_uid = recs[i].uid; } else { if (next_uid != first_uid) t->appends_nonsorted = TRUE; -- 2.47.3