From: Martti Rannanjärvi Date: Mon, 9 May 2016 07:40:56 +0000 (+0300) Subject: lib: check stream_errno too when checking whether istream is closed X-Git-Tag: 2.3.0.rc1~3793 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=52041ed691a26ca80e4e805765e9f55ec097c8f1;p=thirdparty%2Fdovecot%2Fcore.git lib: check stream_errno too when checking whether istream is closed --- diff --git a/src/lib/istream.c b/src/lib/istream.c index 4ab8893967..e265d1cea8 100644 --- a/src/lib/istream.c +++ b/src/lib/istream.c @@ -269,7 +269,7 @@ void i_stream_skip(struct istream *stream, uoff_t count) _stream->skip = _stream->pos; stream->v_offset += data_size; - if (unlikely(stream->closed)) + if (unlikely(stream->closed || stream->stream_errno != 0)) return; _stream->seek(_stream, stream->v_offset + count, FALSE); @@ -296,7 +296,7 @@ void i_stream_seek(struct istream *stream, uoff_t v_offset) i_stream_can_optimize_seek(_stream)) i_stream_skip(stream, v_offset - stream->v_offset); else { - if (unlikely(stream->closed)) + if (unlikely(stream->closed || stream->stream_errno != 0)) return; stream->eof = FALSE; @@ -309,7 +309,7 @@ void i_stream_seek_mark(struct istream *stream, uoff_t v_offset) { struct istream_private *_stream = stream->real_stream; - if (unlikely(stream->closed)) + if (unlikely(stream->closed || stream->stream_errno != 0)) return; stream->eof = FALSE; @@ -321,7 +321,7 @@ void i_stream_sync(struct istream *stream) { struct istream_private *_stream = stream->real_stream; - if (unlikely(stream->closed)) + if (unlikely(stream->closed || stream->stream_errno != 0)) return; if (_stream->sync != NULL) { @@ -334,7 +334,7 @@ int i_stream_stat(struct istream *stream, bool exact, const struct stat **st_r) { struct istream_private *_stream = stream->real_stream; - if (unlikely(stream->closed)) + if (unlikely(stream->closed || stream->stream_errno != 0)) return -1; if (_stream->stat(_stream, exact) < 0) @@ -347,7 +347,7 @@ int i_stream_get_size(struct istream *stream, bool exact, uoff_t *size_r) { struct istream_private *_stream = stream->real_stream; - if (unlikely(stream->closed)) + if (unlikely(stream->closed || stream->stream_errno != 0)) return -1; return _stream->get_size(_stream, exact, size_r);