[dovecot-cvs] dovecot/src/lib-mail istream-header-filter.c, 1.12, 1.13 message-parser.c, 1.58, 1.59

cras at dovecot.org cras at dovecot.org
Sun Aug 22 12:13:52 EEST 2004


Update of /home/cvs/dovecot/src/lib-mail
In directory talvi:/tmp/cvs-serv2122/lib-mail

Modified Files:
	istream-header-filter.c message-parser.c 
Log Message:
Fixes for nonblocking streams.



Index: istream-header-filter.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-mail/istream-header-filter.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- istream-header-filter.c	22 Aug 2004 09:13:22 -0000	1.12
+++ istream-header-filter.c	22 Aug 2004 09:13:50 -0000	1.13
@@ -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;
 }

Index: message-parser.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-mail/message-parser.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -d -r1.58 -r1.59
--- message-parser.c	22 Aug 2004 09:12:09 -0000	1.58
+++ message-parser.c	22 Aug 2004 09:13:50 -0000	1.59
@@ -734,7 +734,7 @@
 				/* error / EOF with no bytes */
 				return -1;
 			}
-			if (ret == 0) {
+			if (ret == 0 && !ctx->input->eof) {
 				/* stream is nonblocking - need more data */
 				return 0;
 			}



More information about the dovecot-cvs mailing list