[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