From: Timo Sirainen Date: Thu, 1 Jul 2010 15:28:15 +0000 (+0100) Subject: mdbox: Error handling fixes. X-Git-Tag: 2.0.rc1~46 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=452b838c1b483c7663fd9ef2e4578ff76758a426;p=thirdparty%2Fdovecot%2Fcore.git mdbox: Error handling fixes. --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/dbox-multi/mdbox-map.c b/src/lib-storage/index/dbox-multi/mdbox-map.c index 85544b6d2b..3141b60de7 100644 --- a/src/lib-storage/index/dbox-multi/mdbox-map.c +++ b/src/lib-storage/index/dbox-multi/mdbox-map.c @@ -481,13 +481,16 @@ int mdbox_map_atomic_finish(struct mdbox_map_atomic_context **_atomic) *_atomic = NULL; - if (atomic->success) { + if (atomic->sync_ctx == NULL) { + /* not locked */ + i_assert(!atomic->locked); + } else if (atomic->success) { if (mail_index_sync_commit(&atomic->sync_ctx) < 0) { mail_storage_set_internal_error(MAP_STORAGE(atomic->map)); mail_index_reset_error(atomic->map->index); ret = -1; } - } else if (atomic->sync_ctx != NULL) { + } else { mail_index_sync_rollback(&atomic->sync_ctx); } i_free(atomic); diff --git a/src/lib-storage/index/dbox-multi/mdbox-save.c b/src/lib-storage/index/dbox-multi/mdbox-save.c index 7ad581362f..0eeea38d2a 100644 --- a/src/lib-storage/index/dbox-multi/mdbox-save.c +++ b/src/lib-storage/index/dbox-multi/mdbox-save.c @@ -141,6 +141,8 @@ int mdbox_save_begin(struct mail_save_context *_ctx, struct istream *input) if (mdbox_map_append_next(ctx->append_ctx, mail_size, 0, &ctx->cur_file_append, &ctx->ctx.dbox_output) < 0) { + ctx->cur_file_append = NULL; + ctx->ctx.dbox_output = NULL; ctx->ctx.failed = TRUE; return -1; }