From 5a20b6bb2a3a04300e341755e3bc2029042727d4 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 12 May 2016 07:18:49 -0400 Subject: [PATCH] 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. --- src/lib-fs/fs-metawrap.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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; }