# HG changeset patch # User Timo Sirainen # Date 1487010229 -7200 # Node ID ab3bec3c09a82d09c572daa5c00cec630e912dda # Parent 4026d71bfe18542e37aef5e3a21f5ec4d67a6636 virtual: Fix saving to a virtual mailbox to work again Previous changes broke it. diff -r 4026d71bfe18 -r ab3bec3c09a8 src/plugins/virtual/virtual-mail.c --- a/src/plugins/virtual/virtual-mail.c Thu Feb 09 17:18:51 2017 +0200 +++ b/src/plugins/virtual/virtual-mail.c Mon Feb 13 20:23:49 2017 +0200 @@ -172,6 +172,18 @@ 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; diff -r 4026d71bfe18 -r ab3bec3c09a8 src/plugins/virtual/virtual-save.c --- a/src/plugins/virtual/virtual-save.c Thu Feb 09 17:18:51 2017 +0200 +++ b/src/plugins/virtual/virtual-save.c Mon Feb 13 20:23:49 2017 +0200 @@ -79,10 +79,7 @@ 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) { @@ -113,8 +110,8 @@ 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); } diff -r 4026d71bfe18 -r ab3bec3c09a8 src/plugins/virtual/virtual-storage.h --- a/src/plugins/virtual/virtual-storage.h Thu Feb 09 17:18:51 2017 +0200 +++ b/src/plugins/virtual/virtual-storage.h Mon Feb 13 20:23:49 2017 +0200 @@ -195,6 +195,8 @@ 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);