changeset 9004:d2d93c02dc7b HEAD

mbox: Fix to handling CRs before From_ lines.
author Timo Sirainen <tss@iki.fi>
date Fri, 01 May 2009 13:15:30 -0400
parents 2f895db2af46
children e87431fb8c90
files src/lib-storage/index/mbox/istream-raw-mbox.c
diffstat 1 files changed, 11 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/istream-raw-mbox.c	Fri May 01 13:05:45 2009 -0400
+++ b/src/lib-storage/index/mbox/istream-raw-mbox.c	Fri May 01 13:15:30 2009 -0400
@@ -295,19 +295,19 @@
 				/* potential From-line, see if we have the
 				   rest of the line buffered. */
 				i++;
+				if (i >= 7 && buf[i-7] == '\r') {
+					/* CR also belongs to it. */
+					crlf_ending = TRUE;
+					from_start_pos = i - 7;
+				} else {
+					crlf_ending = FALSE;
+					from_start_pos = i - 6;
+				}
+
 				if (rstream->hdr_offset + rstream->mail_size ==
-				    stream->istream.v_offset + i - 6 ||
+				    stream->istream.v_offset + from_start_pos ||
 				    rstream->mail_size == (uoff_t)-1) {
 					from_after_pos = i;
-					from_start_pos = i - 6;
-					if (from_start_pos > 0 &&
-					    buf[from_start_pos-1] == '\r') {
-						/* CR also belongs to it. */
-						crlf_ending = TRUE;
-						from_start_pos--;
-					} else {
-						crlf_ending = FALSE;
-					}
 					if (ret == -2) {
 						/* even if we don't have the
 						   whole line, we need to
@@ -316,7 +316,7 @@
 					}
 				}
 				fromp = mbox_from;
-			} else if (from_start_pos != (size_t)-1) {
+			} else if (from_after_pos != (size_t)-1) {
 				/* we have the whole From-line here now.
 				   See if it's a valid one. */
 			mbox_verify: