changeset 7265:36da161ecc66 HEAD

Fixed "Cached message offset lost" errors when quota plugin was used.
author Timo Sirainen <tss@iki.fi>
date Sun, 17 Feb 2008 14:30:39 +0200
parents 91cf91f0a0a8
children c1e18e979ac3
files src/lib-storage/index/mbox/mbox-mail.c
diffstat 1 files changed, 12 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-mail.c	Sun Feb 17 12:48:44 2008 +0200
+++ b/src/lib-storage/index/mbox/mbox-mail.c	Sun Feb 17 14:30:39 2008 +0200
@@ -195,14 +195,19 @@
 	/* use the next message's offset to avoid reading through the entire
 	   message body to find out its size */
 	hdr = mail_index_get_header(mail->trans->trans_view);
-	if (_mail->seq == hdr->messages_count) {
-		/* last message, use the synced mbox size */
-		int trailer_size;
+	if (_mail->seq >= hdr->messages_count) {
+		if (_mail->seq == hdr->messages_count) {
+			/* last message, use the synced mbox size */
+			int trailer_size;
 
-		trailer_size = (mbox->storage->storage.flags &
-				MAIL_STORAGE_FLAG_SAVE_CRLF) != 0 ? 2 : 1;
-
-		body_size = hdr->sync_size - body_offset - trailer_size;
+			trailer_size = (mbox->storage->storage.flags &
+					MAIL_STORAGE_FLAG_SAVE_CRLF) != 0 ?
+				2 : 1;
+			body_size = hdr->sync_size - body_offset - trailer_size;
+		} else {
+			/* we're appending a new message */
+			body_size = (uoff_t)-1;
+		}
 	} else if (mbox_file_lookup_offset(mbox, mail->trans->trans_view,
 					   _mail->seq + 1, &next_offset) > 0) {
 		body_size = next_offset - body_offset;