[dovecot-cvs] dovecot/src/lib-index/maildir maildir-sync.c,1.33,1.34

cras at procontrol.fi cras at procontrol.fi
Sat Apr 12 18:53:46 EEST 2003


Update of /home/cvs/dovecot/src/lib-index/maildir
In directory danu:/tmp/cvs-serv15877/lib-index/maildir

Modified Files:
	maildir-sync.c 
Log Message:
Expunging mails broke syncing



Index: maildir-sync.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/maildir/maildir-sync.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- maildir-sync.c	10 Apr 2003 20:36:09 -0000	1.33
+++ maildir-sync.c	12 Apr 2003 14:53:43 -0000	1.34
@@ -153,7 +153,7 @@
         struct maildir_uidlist_rec uid_rec;
 	const char *fname, **new_files;
 	void *orig_key, *orig_value;
-	unsigned int seq, last_uid, i;
+	unsigned int seq, uid, last_uid, i;
 	buffer_t *buf;
 
         seq = 0;
@@ -167,10 +167,10 @@
 	}
 
 	while (rec != NULL) {
-		seq++;
+		seq++; uid = rec->uid;
 
 		/* skip over the expunged records in uidlist */
-		while (uid_rec.uid != 0 && uid_rec.uid < rec->uid) {
+		while (uid_rec.uid != 0 && uid_rec.uid < uid) {
 			uidlist->rewrite = TRUE;
 			if (!maildir_uidlist_next(uidlist, &uid_rec))
 				return FALSE;
@@ -189,10 +189,10 @@
 			return FALSE;
 		}
 
-		if (uid_rec.uid != 0 &&
+		if (uid_rec.uid == uid &&
 		    maildir_cmp(fname, uid_rec.filename) != 0) {
 			index_set_corrupted(index, "Filename mismatch for UID "
-					    "%u: %s vs %s", rec->uid, fname,
+					    "%u: %s vs %s", uid, fname,
 					    uid_rec.filename);
 			return FALSE;
 		}
@@ -220,7 +220,7 @@
 			i_unreached();
 		}
 
-		if (uid_rec.uid != 0) {
+		if (uid_rec.uid != 0 && uid_rec.uid <= uid) {
 			if (maildir_uidlist_next(uidlist, &uid_rec) < 0)
 				return FALSE;
 		}




More information about the dovecot-cvs mailing list