From: Timo Sirainen Date: Wed, 18 May 2016 16:22:40 +0000 (+0300) Subject: lib: istream-file: Fixed o_stream_send_istream() X-Git-Tag: 2.3.0.rc1~3702 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=56f5cea321c85b505d35d0ba11cfdd53c8bdd9d3;p=thirdparty%2Fdovecot%2Fcore.git lib: istream-file: Fixed o_stream_send_istream() --- diff --git a/src/lib/ostream-file.c b/src/lib/ostream-file.c index dc157cbd65..c026868b7a 100644 --- a/src/lib/ostream-file.c +++ b/src/lib/ostream-file.c @@ -714,7 +714,7 @@ static int io_stream_sendfile(struct ostream_private *outstream, return -1; v_offset = instream->v_offset; - for (;;) { + while (v_offset < in_size) { offset = instream->real_stream->abs_start_offset + v_offset; send_size = in_size - v_offset; @@ -754,7 +754,12 @@ static int io_stream_sendfile(struct ostream_private *outstream, } i_stream_seek(instream, v_offset); - return ret <= 0 ? ret : 1; + if (v_offset == in_size) { + instream->eof = TRUE; + return 1; + } + i_assert(ret <= 0); + return ret; } static int io_stream_copy_backwards(struct ostream_private *outstream,