From: Timo Sirainen Date: Thu, 27 May 2010 11:53:35 +0000 (+0100) Subject: dbox, mdbox, maildir: If saving one mail fails in transaction, don't fail subsequent... X-Git-Tag: 2.0.beta6~141 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e2eac5bb5637c2d4aaf453389750740931822b92;p=thirdparty%2Fdovecot%2Fcore.git dbox, mdbox, maildir: If saving one mail fails in transaction, don't fail subsequent saves. --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/cydir/cydir-save.c b/src/lib-storage/index/cydir/cydir-save.c index c91899511d..40444c6475 100644 --- a/src/lib-storage/index/cydir/cydir-save.c +++ b/src/lib-storage/index/cydir/cydir-save.c @@ -81,6 +81,8 @@ int cydir_save_begin(struct mail_save_context *_ctx, struct istream *input) enum mail_flags save_flags; struct istream *crlf_input; + ctx->failed = FALSE; + T_BEGIN { const char *path; diff --git a/src/lib-storage/index/dbox-multi/mdbox-save.c b/src/lib-storage/index/dbox-multi/mdbox-save.c index 0cbbf6865b..d934940226 100644 --- a/src/lib-storage/index/dbox-multi/mdbox-save.c +++ b/src/lib-storage/index/dbox-multi/mdbox-save.c @@ -104,6 +104,7 @@ mdbox_save_alloc(struct mailbox_transaction_context *t) if (ctx != NULL) { /* use the existing allocated structure */ + ctx->ctx.failed = FALSE; ctx->ctx.finished = FALSE; return &ctx->ctx.ctx; } diff --git a/src/lib-storage/index/dbox-single/sdbox-save.c b/src/lib-storage/index/dbox-single/sdbox-save.c index d2f345ba97..03b2db135c 100644 --- a/src/lib-storage/index/dbox-single/sdbox-save.c +++ b/src/lib-storage/index/dbox-single/sdbox-save.c @@ -57,6 +57,7 @@ sdbox_save_alloc(struct mailbox_transaction_context *t) if (ctx != NULL) { /* use the existing allocated structure */ + ctx->ctx.failed = FALSE; ctx->ctx.finished = FALSE; return &ctx->ctx.ctx; } diff --git a/src/lib-storage/index/maildir/maildir-save.c b/src/lib-storage/index/maildir/maildir-save.c index 69074859d9..c42c248efd 100644 --- a/src/lib-storage/index/maildir/maildir-save.c +++ b/src/lib-storage/index/maildir/maildir-save.c @@ -383,6 +383,9 @@ int maildir_save_begin(struct mail_save_context *_ctx, struct istream *input) { struct maildir_save_context *ctx = (struct maildir_save_context *)_ctx; + /* new mail, new failure state */ + ctx->failed = FALSE; + T_BEGIN { /* create a new file in tmp/ directory */ const char *fname = _ctx->guid;