Mercurial > dovecot > core-2.2
changeset 12677:3216c3883a7b
virtual: Fixed saving multiple mails in a transaction (e.g. copy multiple messages).
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 04 Jan 2011 11:55:36 +0200 |
parents | b8896cfa38cb |
children | a45ce2faf82a |
files | src/plugins/virtual/virtual-save.c |
diffstat | 1 files changed, 8 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/virtual/virtual-save.c Tue Jan 04 11:44:07 2011 +0200 +++ b/src/plugins/virtual/virtual-save.c Tue Jan 04 11:55:36 2011 +0200 @@ -21,18 +21,20 @@ struct mailbox_transaction_context *backend_trans; struct virtual_save_context *ctx; - if (_t->save_ctx != NULL) - return _t->save_ctx; - - ctx = i_new(struct virtual_save_context, 1); - ctx->ctx.transaction = &t->ictx.mailbox_ctx; + if (_t->save_ctx == NULL) { + ctx = i_new(struct virtual_save_context, 1); + ctx->ctx.transaction = &t->ictx.mailbox_ctx; + _t->save_ctx = &ctx->ctx; + } else { + ctx = (struct virtual_save_context *)_t->save_ctx; + } if (mbox->save_bbox != NULL) { + i_assert(ctx->backend_save_ctx == NULL); backend_trans = virtual_transaction_get(_t, mbox->save_bbox->box); ctx->backend_save_ctx = mailbox_save_alloc(backend_trans); } - _t->save_ctx = &ctx->ctx; return _t->save_ctx; }