hdr = mail_index_get_header(box->view);
trans = mail_index_transaction_begin(box->view, 0);
- mdbox_update_header(mbox, trans, update);
uid_validity = hdr->uid_validity;
if (update != NULL && update->uid_validity != 0)
}
if (hdr->uid_validity != uid_validity) {
+ if (hdr->uid_validity != 0) {
+ /* UIDVALIDITY change requires index to be reset */
+ mail_index_reset(trans);
+ }
mail_index_update_header(trans,
offsetof(struct mail_index_header, uid_validity),
&uid_validity, sizeof(uid_validity), TRUE);
update->min_highest_modseq);
}
+ mdbox_update_header(mbox, trans, update);
if (mail_index_transaction_commit(&trans) < 0) {
mail_storage_set_index_error(box);
return -1;
hdr = mail_index_get_header(box->view);
trans = mail_index_transaction_begin(box->view, 0);
- sdbox_update_header(mbox, trans, update);
if (update != NULL && update->uid_validity != 0)
uid_validity = update->uid_validity;
}
if (hdr->uid_validity != uid_validity) {
+ if (hdr->uid_validity != 0) {
+ /* UIDVALIDITY change requires index to be reset */
+ mail_index_reset(trans);
+ }
mail_index_update_header(trans,
offsetof(struct mail_index_header, uid_validity),
&uid_validity, sizeof(uid_validity), TRUE);
update->min_highest_modseq);
}
+ sdbox_update_header(mbox, trans, update);
if (mail_index_transaction_commit(&trans) < 0) {
mail_storage_set_internal_error(box->storage);
mail_index_reset_error(box->index);
hdr->uid_validity != update->uid_validity) {
uint32_t uid_validity = update->uid_validity;
+ if (hdr->uid_validity != 0) {
+ /* UIDVALIDITY change requires index to be reset */
+ mail_index_reset(trans);
+ }
mail_index_update_header(trans,
offsetof(struct mail_index_header, uid_validity),
&uid_validity, sizeof(uid_validity), TRUE);