return vmail->cur_backend_mail;
}
+void virtual_mail_set_unattached_backend_mail(struct mail *mail,
+ struct mail *backend_mail)
+{
+ struct virtual_mail *vmail = (struct virtual_mail *)mail;
+ struct mail_private *backend_pmail;
+
+ vmail->cur_backend_mail = backend_mail;
+
+ backend_pmail = (struct mail_private *)backend_mail;
+ backend_pmail->vmail = mail;
+}
+
static void virtual_mail_set_seq(struct mail *mail, uint32_t seq, bool saving)
{
struct virtual_mail *vmail = (struct virtual_mail *)mail;
int virtual_save_begin(struct mail_save_context *_ctx, struct istream *input)
{
struct virtual_save_context *ctx = (struct virtual_save_context *)_ctx;
- struct virtual_mailbox *mbox =
- (struct virtual_mailbox *)_ctx->transaction->box;
struct mail_save_data *mdata = &_ctx->data;
- struct mail *mail;
if (ctx->backend_save_ctx == NULL) {
if (ctx->open_errstr != NULL) {
mailbox_save_set_guid(ctx->backend_save_ctx, mdata->guid);
mailbox_save_set_min_modseq(ctx->backend_save_ctx, mdata->min_modseq);
- mail = virtual_mail_set_backend_mail(_ctx->dest_mail, mbox->save_bbox);
- mailbox_save_set_dest_mail(ctx->backend_save_ctx, mail);
+ virtual_mail_set_unattached_backend_mail(_ctx->dest_mail,
+ ctx->backend_save_ctx->dest_mail);
return mailbox_save_begin(&ctx->backend_save_ctx, input);
}
struct mail *
virtual_mail_set_backend_mail(struct mail *mail,
struct virtual_backend_box *bbox);
+void virtual_mail_set_unattached_backend_mail(struct mail *mail,
+ struct mail *backend_mail);
struct mailbox_sync_context *
virtual_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags);