/* Returns 1 = ok, 0 = no private indexes, -1 = error */
int index_mailbox_sync_pvt_init(struct mailbox *box, bool lock,
+ enum mail_index_view_sync_flags flags,
struct index_mailbox_sync_pvt_context **ctx_r);
int index_mailbox_sync_pvt_newmails(struct index_mailbox_sync_pvt_context *ctx,
struct mailbox_transaction_context *trans);
struct mail_index_view *view_pvt;
struct mail_index_transaction *trans_pvt;
struct mail_index_view *view_shared;
+
+ enum mail_index_view_sync_flags flags;
};
static int sync_pvt_expunges(struct index_mailbox_sync_pvt_context *ctx)
}
int index_mailbox_sync_pvt_init(struct mailbox *box, bool lock,
+ enum mail_index_view_sync_flags flags,
struct index_mailbox_sync_pvt_context **ctx_r)
{
struct index_mailbox_sync_pvt_context *ctx;
ctx = i_new(struct index_mailbox_sync_pvt_context, 1);
ctx->box = box;
+ ctx->flags = flags;
if (lock) {
if (index_mailbox_sync_open(ctx, TRUE) < 0) {
index_mailbox_sync_pvt_deinit(&ctx);
return -1;
/* sync the private view */
- view_sync_ctx = mail_index_view_sync_begin(ctx->box->view_pvt, 0);
+ view_sync_ctx = mail_index_view_sync_begin(ctx->box->view_pvt, ctx->flags);
while (mail_index_view_sync_next(view_sync_ctx, &sync_rec)) {
if (sync_rec.type != MAIL_INDEX_VIEW_SYNC_TYPE_FLAGS)
continue;
doesn't matter if it's called at _sync_init() or _sync_deinit().
however we also need to know if any private flags have changed
since last sync, so we need to call it before _sync_next() calls. */
- if (index_mailbox_sync_pvt_init(box, FALSE, &pvt_ctx) > 0) {
+ if (index_mailbox_sync_pvt_init(box, FALSE, sync_flags, &pvt_ctx) > 0) {
(void)index_mailbox_sync_pvt_view(pvt_ctx, &ctx->flag_updates,
&ctx->hidden_updates);
index_mailbox_sync_pvt_deinit(&pvt_ctx);
}
if (array_is_created(&t->pvt_saves)) {
- if (index_mailbox_sync_pvt_init(t->box, TRUE, &pvt_sync_ctx) < 0)
+ if (index_mailbox_sync_pvt_init(t->box, TRUE, 0, &pvt_sync_ctx) < 0)
ret = -1;
}