changeset 126:cf7de0db6ba8 HEAD

Flags for new messages weren't set properly, so the header sum counters were wrong.
author Timo Sirainen <tss@iki.fi>
date Tue, 03 Sep 2002 22:31:00 +0300
parents 2c641eb4324b
children 90a604e78df1
files src/lib-index/mail-index.c src/lib-index/maildir/maildir-build.c src/lib-index/mbox/mbox-append.c
diffstat 3 files changed, 13 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-index.c	Tue Sep 03 22:08:50 2002 +0300
+++ b/src/lib-index/mail-index.c	Tue Sep 03 22:31:00 2002 +0300
@@ -132,9 +132,10 @@
 	}
 
 	failed = FALSE;
-	if (!mail_hash_sync_file(index->hash))
+	if (index->hash != NULL && !mail_hash_sync_file(index->hash))
 		failed = TRUE;
-	if (!mail_modifylog_sync_file(index->modifylog))
+	if (index->modifylog != NULL &&
+	    !mail_modifylog_sync_file(index->modifylog))
 		failed = TRUE;
 
 	/* keep index's modify stamp same as the sync file's stamp */
@@ -1310,7 +1311,7 @@
 			    int external_change)
 {
 	i_assert(index->lock_type == MAIL_LOCK_EXCLUSIVE);
-	i_assert(seq != 0);
+	i_assert(seq != 0 || !external_change);
 
 	if (flags == rec->msg_flags)
 		return TRUE; /* no changes */
--- a/src/lib-index/maildir/maildir-build.c	Tue Sep 03 22:08:50 2002 +0300
+++ b/src/lib-index/maildir/maildir-build.c	Tue Sep 03 22:31:00 2002 +0300
@@ -60,9 +60,6 @@
 	if (rec == NULL)
 		return FALSE;
 
-	/* set message flags from file name */
-	rec->msg_flags = maildir_filename_get_flags(fname, 0);
-
 	update = index->update_begin(index, rec);
 
 	/* set the location */
@@ -78,6 +75,11 @@
 		return FALSE;
 	}
 
+	/* set message flags from file name, after location field is saved */
+	if (!index->update_flags(index, rec, 0,
+				 maildir_filename_get_flags(fname, 0), FALSE))
+		return FALSE;
+
 	return TRUE;
 }
 
--- a/src/lib-index/mbox/mbox-append.c	Tue Sep 03 22:08:50 2002 +0300
+++ b/src/lib-index/mbox/mbox-append.c	Tue Sep 03 22:31:00 2002 +0300
@@ -160,9 +160,6 @@
 	inbuf->size = old_size;
 	io_buffer_seek(inbuf, stop_offset);
 
-	/* save message flags */
-	rec->msg_flags |= ctx.flags;
-
 	/* save MD5 */
 	md5_final(&ctx.md5, md5_digest);
 	index->update_field(update, FIELD_TYPE_MD5,
@@ -174,6 +171,10 @@
 		return FALSE;
 	}
 
+	/* save message flags, after location field is saved */
+	if (!index->update_flags(index, rec, 0, ctx.flags, FALSE))
+		return FALSE;
+
 	return TRUE;
 }