]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dbox: If saving is aborted, don't add a broken record about it to index.
authorTimo Sirainen <tss@iki.fi>
Thu, 9 Feb 2012 18:37:24 +0000 (20:37 +0200)
committerTimo Sirainen <tss@iki.fi>
Thu, 9 Feb 2012 18:37:24 +0000 (20:37 +0200)
src/lib-storage/index/dbox-multi/mdbox-save.c
src/lib-storage/index/dbox-single/sdbox-save.c

index ce273933445581b363d14f6dd34ba78e8a18dfca..13e7aef1cc53c08283d9adee3bb725d6f911f733 100644 (file)
@@ -218,6 +218,7 @@ static int mdbox_save_finish_write(struct mail_save_context *_ctx)
        i_stream_unref(&ctx->ctx.input);
 
        if (ctx->ctx.failed) {
+               mail_index_expunge(ctx->ctx.trans, ctx->ctx.seq);
                mdbox_map_append_abort(ctx->append_ctx);
                array_delete(&ctx->mails, array_count(&ctx->mails) - 1, 1);
                return -1;
index c5e1417bb4bf9c8370f054b5a72be2f1bb2c8adc..e6883f497a74a099e5e1659e5474531c34f22e4d 100644 (file)
@@ -184,9 +184,10 @@ static int dbox_save_finish_write(struct mail_save_context *_ctx)
                        ctx->ctx.failed = TRUE;
        } T_END;
 
-       if (ctx->ctx.failed)
+       if (ctx->ctx.failed) {
+               mail_index_expunge(ctx->ctx.trans, ctx->ctx.seq);
                dbox_file_append_rollback(&ctx->append_ctx);
-       else {
+       else {
                dbox_file_append_checkpoint(ctx->append_ctx);
                if (dbox_file_append_commit(&ctx->append_ctx) < 0)
                        ctx->ctx.failed = TRUE;