]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
istream-base64-encoder: Fixed reading when parent stream returned little data.
authorTimo Sirainen <tss@iki.fi>
Fri, 3 Dec 2010 09:09:10 +0000 (09:09 +0000)
committerTimo Sirainen <tss@iki.fi>
Fri, 3 Dec 2010 09:09:10 +0000 (09:09 +0000)
src/lib/istream-base64-encoder.c

index ddfb18a918c811bd861f1fc02239e61a545e4a3b..78552fda98d33c59a7dfca536f9802407bd437f0 100644 (file)
@@ -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;