From: Timo Sirainen Date: Sun, 25 May 2008 02:01:47 +0000 (+0300) Subject: Maildir: Moved uidlist refreshing to maildir_uidlist_lookup() where it X-Git-Tag: 1.1.rc6~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c8b9d99ba6bf13504d1943b7a650d2844d7f7b11;p=thirdparty%2Fdovecot%2Fcore.git Maildir: Moved uidlist refreshing to maildir_uidlist_lookup() where it benefits all callers. --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/maildir/maildir-mail.c b/src/lib-storage/index/maildir/maildir-mail.c index 288b3ce3dc..e456ffd31e 100644 --- a/src/lib-storage/index/maildir/maildir-mail.c +++ b/src/lib-storage/index/maildir/maildir-mail.c @@ -152,14 +152,6 @@ maildir_mail_get_fname(struct maildir_mailbox *mbox, struct mail *mail, if (*fname_r != NULL) return TRUE; - /* refresh uidlist and check again in case it was added after the last - mailbox sync */ - if (maildir_uidlist_refresh(mbox->uidlist) < 0) - return FALSE; - *fname_r = maildir_uidlist_lookup(mbox->uidlist, mail->uid, &flags); - if (*fname_r != NULL) - return TRUE; - /* file exists in index file, but not in dovecot-uidlist anymore. */ mail_set_expunged(mail); diff --git a/src/lib-storage/index/maildir/maildir-uidlist.c b/src/lib-storage/index/maildir/maildir-uidlist.c index 1e31e7ae3d..0b8364d87b 100644 --- a/src/lib-storage/index/maildir/maildir-uidlist.c +++ b/src/lib-storage/index/maildir/maildir-uidlist.c @@ -821,12 +821,16 @@ maildir_uidlist_lookup(struct maildir_uidlist *uidlist, uint32_t uid, fname = maildir_uidlist_lookup_nosync(uidlist, uid, flags_r); if (fname == NULL) { - if (uidlist->fd != -1 || uidlist->mbox == NULL) - return NULL; - - /* the uidlist doesn't exist. */ - if (maildir_storage_sync_force(uidlist->mbox, uid) < 0) - return NULL; + if (uidlist->fd != -1 || uidlist->mbox == NULL) { + /* refresh uidlist and check again in case it was added + after the last mailbox sync */ + if (maildir_uidlist_refresh(uidlist) < 0) + return NULL; + } else { + /* the uidlist doesn't exist. */ + if (maildir_storage_sync_force(uidlist->mbox, uid) < 0) + return NULL; + } /* try again */ fname = maildir_uidlist_lookup_nosync(uidlist, uid, flags_r);