diff src/lib-mail/istream-header-filter.c @ 2444:881e265febfa HEAD

Fixes for nonblocking streams.
author Timo Sirainen <tss@iki.fi>
date Sun, 22 Aug 2004 12:13:50 +0300
parents aa6b874f7515
children f6fef42f01b9
line wrap: on
line diff
--- a/src/lib-mail/istream-header-filter.c	Sun Aug 22 12:13:22 2004 +0300
+++ b/src/lib-mail/istream-header-filter.c	Sun Aug 22 12:13:50 2004 +0300
@@ -202,19 +202,21 @@
 
 	stream->buffer = i_stream_get_data(mstream->input, &pos);
 	if (pos <= stream->pos) {
-		if (i_stream_read(mstream->input) == -2) {
+		if ((ret = i_stream_read(mstream->input)) == -2) {
 			if (stream->skip == 0)
 				return -2;
 		}
 		stream->istream.eof = mstream->input->eof;
 		stream->buffer = i_stream_get_data(mstream->input, &pos);
+	} else {
+		ret = 0;
 	}
 
 	stream->pos -= stream->skip;
 	stream->skip = 0;
 
-	ret = pos <= stream->pos ? -1 :
-		(ssize_t) (pos - stream->pos);
+	ret = pos > stream->pos ? (ssize_t)(pos - stream->pos) :
+		(ret == 0 ? 0 : -1);
 	stream->pos = pos;
 	return ret;
 }