MAIL_INDEX_MAIL_FLAG_BACKEND);
}
mail_free(&mail);
- return doveadm_mail_iter_deinit(&iter);
+ return doveadm_mail_iter_deinit_sync(&iter);
}
static void ns_purge(struct mail_namespace *ns)
return ret;
}
-int doveadm_mail_iter_deinit(struct doveadm_mail_iter **_iter)
+static int
+doveadm_mail_iter_deinit_full(struct doveadm_mail_iter **_iter, bool sync)
{
struct doveadm_mail_iter *iter = *_iter;
int ret;
*_iter = NULL;
ret = doveadm_mail_iter_deinit_transaction(iter);
+ if (ret == 0 && sync)
+ ret = mailbox_sync(iter->box, 0);
mailbox_free(&iter->box);
i_free(iter);
return ret;
}
+int doveadm_mail_iter_deinit(struct doveadm_mail_iter **_iter)
+{
+ return doveadm_mail_iter_deinit_full(_iter, FALSE);
+}
+
+int doveadm_mail_iter_deinit_sync(struct doveadm_mail_iter **_iter)
+{
+ return doveadm_mail_iter_deinit_full(_iter, TRUE);
+}
+
bool doveadm_mail_iter_next(struct doveadm_mail_iter *iter, struct mail *mail)
{
return mailbox_search_next(iter->search_ctx, mail);
struct mailbox_transaction_context **trans_r,
struct doveadm_mail_iter **iter_r);
int doveadm_mail_iter_deinit(struct doveadm_mail_iter **iter);
+int doveadm_mail_iter_deinit_sync(struct doveadm_mail_iter **iter);
bool doveadm_mail_iter_next(struct doveadm_mail_iter *iter, struct mail *mail);