From: Timo Sirainen Date: Fri, 3 Dec 2010 09:09:10 +0000 (+0000) Subject: istream-base64-encoder: Fixed reading when parent stream returned little data. X-Git-Tag: 2.0.8~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=58438ae6f3928d195c66aec826c7d44a36ce4e9c;p=thirdparty%2Fdovecot%2Fcore.git istream-base64-encoder: Fixed reading when parent stream returned little data. --- diff --git a/src/lib/istream-base64-encoder.c b/src/lib/istream-base64-encoder.c index ddfb18a918..78552fda98 100644 --- a/src/lib/istream-base64-encoder.c +++ b/src/lib/istream-base64-encoder.c @@ -97,12 +97,15 @@ static ssize_t i_stream_base64_encoder_read(struct istream_private *stream) { struct base64_encoder_istream *bstream = (struct base64_encoder_istream *)stream; - size_t pre_count, post_count; + size_t pre_count, post_count, size; int ret; - ret = i_stream_read_parent(stream); - if (ret <= 0) - return ret; + do { + ret = i_stream_read_parent(stream); + if (ret <= 0) + return ret; + (void)i_stream_get_data(stream->parent, &size); + } while (size < 4 && !stream->parent->eof); /* encode as many lines as fits into destination buffer */ pre_count = stream->pos - stream->skip;