Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5369:e897aaa24cdd HEAD
If uidlist is deleted and we set the uidvalidity from the index file, set
also next_uid.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 21 Mar 2007 21:22:39 +0200 |
parents | 7d45edb81fe4 |
children | c1d53e221cb2 |
files | src/lib-storage/index/maildir/maildir-sync.c src/lib-storage/index/maildir/maildir-uidlist.c src/lib-storage/index/maildir/maildir-uidlist.h |
diffstat | 3 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-sync.c Wed Mar 21 21:19:52 2007 +0200 +++ b/src/lib-storage/index/maildir/maildir-sync.c Wed Mar 21 21:22:39 2007 +0200 @@ -1249,7 +1249,7 @@ have to do it here before syncing index records, since after that the uidlist's next_uid value may have changed. */ next_uid = maildir_uidlist_get_next_uid(mbox->uidlist); - if (next_uid != 0 && hdr->next_uid != next_uid) { + if (hdr->next_uid < next_uid) { mail_index_update_header(trans, offsetof(struct mail_index_header, next_uid), &next_uid, sizeof(next_uid), FALSE); @@ -1293,11 +1293,12 @@ if (uid_validity == 0) { uid_validity = ioloop_time; maildir_uidlist_set_uid_validity(mbox->uidlist, - uid_validity); + uid_validity, 1); } } else if (uid_validity == 0) { maildir_uidlist_set_uid_validity(mbox->uidlist, - hdr->uid_validity); + hdr->uid_validity, + hdr->next_uid); } if (uid_validity != hdr->uid_validity && uid_validity != 0) {
--- a/src/lib-storage/index/maildir/maildir-uidlist.c Wed Mar 21 21:19:52 2007 +0200 +++ b/src/lib-storage/index/maildir/maildir-uidlist.c Wed Mar 21 21:22:39 2007 +0200 @@ -539,9 +539,10 @@ } void maildir_uidlist_set_uid_validity(struct maildir_uidlist *uidlist, - uint32_t uid_validity) + uint32_t uid_validity, uint32_t next_uid) { uidlist->uid_validity = uid_validity; + uidlist->next_uid = next_uid; } uint32_t maildir_uidlist_get_next_uid(struct maildir_uidlist *uidlist)
--- a/src/lib-storage/index/maildir/maildir-uidlist.h Wed Mar 21 21:19:52 2007 +0200 +++ b/src/lib-storage/index/maildir/maildir-uidlist.h Wed Mar 21 21:22:39 2007 +0200 @@ -38,7 +38,7 @@ uint32_t maildir_uidlist_get_next_uid(struct maildir_uidlist *uidlist); void maildir_uidlist_set_uid_validity(struct maildir_uidlist *uidlist, - uint32_t uid_validity); + uint32_t uid_validity, uint32_t next_uid); /* Sync uidlist with what's actually on maildir. Returns same as maildir_uidlist_lock(). */