From: Timo Sirainen Date: Wed, 30 Nov 2016 22:56:11 +0000 (+0200) Subject: lib-storage: Return vsize=0 from mailbox list index for empty mailboxes. X-Git-Tag: 2.2.27~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ec4fad7c297dcacb906895b0ec30ef6f4ab0bb22;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Return vsize=0 from mailbox list index for empty mailboxes. If it's known that the mailbox has no mails, there's no reason to open the mailbox to see that its size is 0. --- diff --git a/src/lib-storage/list/mailbox-list-index-status.c b/src/lib-storage/list/mailbox-list-index-status.c index c67963c9f2..14504c72eb 100644 --- a/src/lib-storage/list/mailbox-list-index-status.c +++ b/src/lib-storage/list/mailbox-list-index-status.c @@ -264,8 +264,13 @@ static int index_list_get_cached_vsize(struct mailbox *box, uoff_t *vsize_r) ret = mailbox_list_index_status(box->list, view, seq, STATUS_MESSAGES | STATUS_UIDNEXT, &status, NULL, &vsize) ? 1 : 0; - if (ret > 0 && (vsize.highest_uid + 1 != status.uidnext || - vsize.message_count != status.messages)) { + if (status.messages == 0 && status.uidnext > 0) { + /* mailbox is empty. its size has to be zero, regardless of + what the vsize header says. */ + vsize.vsize = 0; + ret = 1; + } else if (ret > 0 && (vsize.highest_uid + 1 != status.uidnext || + vsize.message_count != status.messages)) { /* out of date vsize info */ ret = 0; }