uint32_t uid_validity;
unsigned int ext_header_changed:1;
- unsigned int ext_header_rewrite:1;
unsigned int expunge_removed:1;
unsigned int index_broken:1;
};
}
if (i < ext_mailbox_count) {
*broken_r = TRUE;
+ mbox->ext_header_rewrite = TRUE;
ret = 0;
}
mbox->highest_mailbox_id = ext_hdr == NULL ? 0 :
}
/* sort the backend mailboxes by mailbox_id. */
array_sort(&mbox->backend_boxes, bbox_mailbox_id_cmp);
+ if (ret == 0)
+ mbox->ext_header_rewrite = TRUE;
return ret;
}
mail_index_view_close(&view);
- if (ctx->ext_header_rewrite) {
+ if (ctx->mbox->ext_header_rewrite) {
/* entire mailbox list needs to be rewritten */
virtual_sync_ext_header_rewrite(ctx);
} else {
bbox->ondisk_highest_modseq = wanted_ondisk_highest_modseq;
bbox->sync_next_uid = status.uidnext;
- if (ctx->ext_header_rewrite) {
+ if (ctx->mbox->ext_header_rewrite) {
/* we'll rewrite the entire header later */
return;
}
mailbox_set_index_error(&ctx->mbox->box);
ret = -1;
}
+ ctx->mbox->ext_header_rewrite = FALSE;
} else {
if (ctx->index_broken) {
/* make sure we don't complain about the same errors
ret = virtual_mailbox_ext_header_read(mbox, ctx->sync_view, &broken);
if (ret < 0)
return virtual_sync_finish(ctx, FALSE);
- if (ret == 0)
- ctx->ext_header_rewrite = TRUE;
if (broken)
ctx->index_broken = TRUE;
/* apply changes from virtual index to backend mailboxes */