From: Timo Sirainen Date: Thu, 12 May 2016 11:18:49 +0000 (-0400) Subject: fs-metawrap: Propagate fs_write_stream_abort() to parent always X-Git-Tag: 2.3.0.rc1~3781 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5a20b6bb2a3a04300e341755e3bc2029042727d4;p=thirdparty%2Fdovecot%2Fcore.git fs-metawrap: Propagate fs_write_stream_abort() to parent always It needed to be done also when temp_output==NULL, because we had already started sending it to parent, but async parent wasn't being finished. --- diff --git a/src/lib-fs/fs-metawrap.c b/src/lib-fs/fs-metawrap.c index 9785ee7f43..5fcb49e12f 100644 --- a/src/lib-fs/fs-metawrap.c +++ b/src/lib-fs/fs-metawrap.c @@ -394,10 +394,17 @@ static int fs_metawrap_write_stream_finish(struct fs_file *_file, bool success) o_stream_unref(&_file->output); } if (!success) { - if (file->temp_output != NULL) - o_stream_destroy(&file->temp_output); - if (file->super_output != NULL) + if (file->super_output != NULL) { + /* no metawrap */ + i_assert(file->temp_output == NULL); + fs_write_stream_abort(file->super, &file->super_output); + } else if (file->temp_output == NULL) { + /* finishing up */ + i_assert(file->super_output == NULL); fs_write_stream_abort(file->super, &file->super_output); + } else { + o_stream_destroy(&file->temp_output); + } return -1; }