dovecot-2.0: istream-base64-encoder: Fixed reading when parent s...

dovecot at dovecot.org dovecot at dovecot.org
Fri Dec 3 11:23:59 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/e5dcc12f8dba
changeset: 12502:e5dcc12f8dba
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Dec 03 09:09:10 2010 +0000
description:
istream-base64-encoder: Fixed reading when parent stream returned little data.

diffstat:

 src/lib/istream-base64-encoder.c |  11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diffs (23 lines):

diff -r 014a6a0a93cf -r e5dcc12f8dba src/lib/istream-base64-encoder.c
--- 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;


More information about the dovecot-cvs mailing list