changeset 2997:c64674a0a92a HEAD

In some cases we may have crashed if header didn't end with LF+LF.
author Timo Sirainen <tss@iki.fi>
date Sun, 19 Dec 2004 09:04:14 +0200
parents 9219e788d774
children 7e1fdbdaf465
files src/lib-storage/index/mbox/istream-raw-mbox.c
diffstat 1 files changed, 6 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/istream-raw-mbox.c	Sun Dec 19 08:36:12 2004 +0200
+++ b/src/lib-storage/index/mbox/istream-raw-mbox.c	Sun Dec 19 09:04:14 2004 +0200
@@ -101,11 +101,12 @@
 	rstream->mail_size = rstream->istream.istream.v_offset + pos -
 		rstream->hdr_offset;
 
-	if (rstream->body_offset != (uoff_t)-1 &&
-	    rstream->hdr_offset + rstream->mail_size < rstream->body_offset) {
-		/* "headers\n\nFrom ..", the second \n belongs to next
+	if (rstream->hdr_offset + rstream->mail_size < rstream->body_offset) {
+		/* a) Header didn't have ending \n
+		   b) "headers\n\nFrom ..", the second \n belongs to next
 		   message which we didn't know at the time yet. */
-		i_assert(rstream->body_offset ==
+		i_assert(rstream->body_offset == (uoff_t)-1 ||
+			 rstream->body_offset ==
 			 rstream->hdr_offset + rstream->mail_size + 1);
 		rstream->body_offset =
 			rstream->hdr_offset + rstream->mail_size;
@@ -126,15 +127,8 @@
 
 	i_assert(stream->istream.v_offset >= rstream->from_offset);
 
-	if (stream->istream.eof) {
-		if (rstream->body_offset == (uoff_t)-1) {
-			/* missing \n from headers */
-			rstream->body_offset =
-				stream->istream.v_offset +
-				(stream->pos - stream->skip);
-		}
+	if (stream->istream.eof)
 		return -1;
-	}
 
 	i_stream_seek(rstream->input, stream->istream.v_offset);