changeset 12502:e5dcc12f8dba

istream-base64-encoder: Fixed reading when parent stream returned little data.
author Timo Sirainen <tss@iki.fi>
date Fri, 03 Dec 2010 09:09:10 +0000
parents 014a6a0a93cf
children 4455f79f964d
files src/lib/istream-base64-encoder.c
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/istream-base64-encoder.c	Fri Dec 03 07:39:13 2010 +0000
+++ b/src/lib/istream-base64-encoder.c	Fri Dec 03 09:09:10 2010 +0000
@@ -97,12 +97,15 @@
 {
 	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;