]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Fix mailbox's vsize header check for mailboxes not in dovecot.list.index
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 20 Jan 2017 12:46:30 +0000 (14:46 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 20 Jan 2017 12:46:30 +0000 (14:46 +0200)
If mailbox wasn't yet in the dovecot.list.index, mailbox_list_index_status()
for it returns FALSE and doesn't initialize the status. In some situations this
may have caused a non-empty mailbox's vsize to be returned as 0.

src/lib-storage/list/mailbox-list-index-status.c

index 16a9e10facd3cbac3ab386c2a045bf67a11c7266..e4266407984f7856d286b79459c90114ee8fbfdb 100644 (file)
@@ -264,11 +264,10 @@ 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 (status.messages == 0 && status.uidnext > 0) {
+       if (ret > 0 && 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 */