UIDs in the cache.
--HG--
branch : HEAD
MAIL_INDEX_TRANSACTION_FLAG_EXTERNAL);
i_array_init(&ctx.maildir_new_files, 8);
mail_index_reset(ctx.trans);
+ index_mailbox_reset_uidvalidity(&mbox->ibox);
mail_index_ext_lookup(mbox->ibox.index, "cache", &ctx.cache_ext_id);
if ((ret = dbox_sync_index_rebuild_ctx(&ctx)) < 0)
uint32_t seq1, uint32_t seq2);
bool index_mailbox_is_recent(struct index_mailbox *ibox, uint32_t uid);
unsigned int index_mailbox_get_recent_count(struct index_mailbox *ibox);
+void index_mailbox_reset_uidvalidity(struct index_mailbox *ibox);
void index_mailbox_check_add(struct index_mailbox *ibox,
const char *path);
seq_range_exists(&ibox->recent_flags, uid);
}
+void index_mailbox_reset_uidvalidity(struct index_mailbox *ibox)
+{
+ /* can't trust the currently cached recent flags anymore */
+ array_clear(&ibox->recent_flags);
+ ibox->recent_flags_count = 0;
+ ibox->recent_flags_prev_uid = 0;
+}
+
unsigned int index_mailbox_get_recent_count(struct index_mailbox *ibox)
{
const struct mail_index_header *hdr;
i_warning("Maildir %s: UIDVALIDITY changed (%u -> %u)",
mbox->path, hdr->uid_validity, uid_validity);
mail_index_reset(trans);
+ index_mailbox_reset_uidvalidity(&mbox->ibox);
maildir_uidlist_set_next_uid(mbox->uidlist, 1, TRUE);
memset(&empty_hdr, 0, sizeof(empty_hdr));
mail_index_reset(sync_ctx->t);
sync_ctx->reset_hdr.next_uid = 1;
sync_ctx->hdr = &sync_ctx->reset_hdr;
+ index_mailbox_reset_uidvalidity(&sync_ctx->mbox->ibox);
}
sync_ctx->prev_msg_uid = 0;