From: Timo Sirainen Date: Mon, 7 Dec 2020 11:07:35 +0000 (+0200) Subject: lib: istream-error - Set max_buffer_size X-Git-Tag: 2.3.14.rc1~228 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=103cb028e3843c147967ad722080bc66aea34809;p=thirdparty%2Fdovecot%2Fcore.git lib: istream-error - Set max_buffer_size Although nothing is actually read from the stream, some filter istreams don't behave properly with max_buffer_size=0. Currently at least istream-decrypt returns -2 for reads instead of -1. Fixes: Panic: file istream.c: line 320 (i_stream_read_memarea): assertion failed: (_stream->skip != _stream->pos) --- diff --git a/src/lib/istream.c b/src/lib/istream.c index 06fd93e8ca..09e15bf4ba 100644 --- a/src/lib/istream.c +++ b/src/lib/istream.c @@ -1224,6 +1224,10 @@ struct istream *i_stream_create_error(int stream_errno) stream->istream.seekable = TRUE; stream->istream.eof = TRUE; stream->istream.stream_errno = stream_errno; + /* Nothing can ever actually be read from this stream, but set a + reasonable max_buffer_size anyway since some filter istreams don't + behave properly otherwise. */ + stream->max_buffer_size = IO_BLOCK_SIZE; i_stream_create(stream, NULL, -1, 0); i_stream_set_name(&stream->istream, "(error)"); return &stream->istream;