dovecot-2.0: maildir: Crashfix to opening a newly created maildir.
dovecot at dovecot.org
dovecot at dovecot.org
Thu Jun 18 00:34:07 EEST 2009
details: http://hg.dovecot.org/dovecot-2.0/rev/ee874a76aaaf
changeset: 9492:ee874a76aaaf
user: Timo Sirainen <tss at iki.fi>
date: Wed Jun 17 17:33:59 2009 -0400
description:
maildir: Crashfix to opening a newly created maildir.
diffstat:
1 file changed, 12 insertions(+), 12 deletions(-)
src/lib-storage/index/maildir/maildir-uidlist.c | 24 +++++++++++------------
diffs (51 lines):
diff -r 0059b2381024 -r ee874a76aaaf src/lib-storage/index/maildir/maildir-uidlist.c
--- a/src/lib-storage/index/maildir/maildir-uidlist.c Wed Jun 17 14:52:47 2009 -0400
+++ b/src/lib-storage/index/maildir/maildir-uidlist.c Wed Jun 17 17:33:59 2009 -0400
@@ -1158,6 +1158,16 @@ void maildir_uidlist_set_ext(struct mail
} T_END;
}
+static void
+maildir_uidlist_generate_uid_validity(struct maildir_uidlist *uidlist)
+{
+ const struct mail_index_header *hdr;
+
+ hdr = mail_index_get_header(uidlist->ibox->view);
+ uidlist->uid_validity = hdr->uid_validity != 0 ? hdr->uid_validity :
+ maildir_get_uidvalidity_next(uidlist->ibox->box.list);
+}
+
static int maildir_uidlist_write_fd(struct maildir_uidlist *uidlist, int fd,
const char *path, unsigned int first_idx,
uoff_t *file_size_r)
@@ -1181,10 +1191,11 @@ static int maildir_uidlist_write_fd(stru
i_assert(first_idx == 0);
uidlist->version = UIDLIST_VERSION;
+ if (uidlist->uid_validity == 0)
+ maildir_uidlist_generate_uid_validity(uidlist);
if (!uidlist->have_mailbox_guid)
mail_generate_guid_128(uidlist->mailbox_guid);
- i_assert(uidlist->uid_validity != 0);
i_assert(uidlist->next_uid > 0);
str_printfa(str, "%u V%u N%u G%s", uidlist->version,
uidlist->uid_validity, uidlist->next_uid,
@@ -1376,17 +1387,6 @@ static int maildir_uidlist_sync_update(s
struct stat st;
uoff_t file_size;
- if (uidlist->uid_validity == 0) {
- /* saving a message to a newly created maildir. */
- const struct mail_index_header *hdr;
-
- hdr = mail_index_get_header(uidlist->ibox->view);
- uidlist->uid_validity = hdr->uid_validity != 0 ?
- hdr->uid_validity :
- maildir_get_uidvalidity_next(uidlist->ibox->box.list);
- }
-
-
if (maildir_uidlist_want_recreate(ctx))
return maildir_uidlist_recreate(uidlist);
More information about the dovecot-cvs
mailing list