return mailbox_list_iter_deinit(&iter);
}
+static void virtual_config_search_args_dup(struct virtual_mailbox *mbox)
+{
+ struct virtual_backend_box *const *bboxes;
+ struct mail_search_args *old_args;
+ unsigned int i, count;
+
+ bboxes = array_get_modifiable(&mbox->backend_boxes, &count);
+ for (i = 0; i < count; i++) {
+ old_args = bboxes[i]->search_args;
+ bboxes[i]->search_args = mail_search_args_dup(old_args);
+ mail_search_args_unref(&old_args);
+ }
+}
+
int virtual_config_read(struct virtual_mailbox *mbox)
{
struct mail_user *user = mbox->storage->storage.ns->user;
"%s: No mailboxes defined", path);
ret = -1;
}
+ if (ret == 0)
+ virtual_config_search_args_dup(mbox);
i_stream_unref(&ctx.input);
(void)close(fd);
return ret;
}
i_array_init(&bboxes[i]->uids, 64);
i_array_init(&bboxes[i]->sync_pending_removes, 64);
+ mail_search_args_init(bboxes[i]->search_args, bboxes[i]->box,
+ FALSE, NULL);
}
if (i == count)
return 0;
ret = mailbox_search_deinit(&search_ctx);
mail_free(&mail);
- mail_search_args_deinit(bbox->search_args);
(void)mailbox_transaction_commit(&trans);
return ret;
}
&status) < 0)
return -1;
- mail_search_args_init(bbox->search_args, bbox->box,
- FALSE, NULL);
virtual_backend_box_sync_mail_set(bbox);
if (status.uidvalidity != bbox->sync_uid_validity) {
/* UID validity changed since last sync (or this is