From: Timo Sirainen Date: Fri, 1 Oct 2021 12:08:45 +0000 (+0300) Subject: virtual: Fix leaking mailboxes if virtual mailbox can't be opened X-Git-Tag: 2.3.17~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1cee336aab7e298b0a4c10ad01b1a8898c78f0f3;p=thirdparty%2Fdovecot%2Fcore.git virtual: Fix leaking mailboxes if virtual mailbox can't be opened Fixes also a crash at deinit: Panic: file mail-user.c: line 232 (mail_user_deinit): assertion failed: ((*user)->refcount == 1) --- diff --git a/src/plugins/virtual/virtual-storage.c b/src/plugins/virtual/virtual-storage.c index a01510f917..9643575614 100644 --- a/src/plugins/virtual/virtual-storage.c +++ b/src/plugins/virtual/virtual-storage.c @@ -498,12 +498,12 @@ static int virtual_mailbox_open(struct mailbox *box) ret = virtual_mailboxes_open(mbox, box->flags); array_pop_back(&mbox->storage->open_stack); } + if (ret == 0) + ret = index_storage_mailbox_open(box, FALSE); if (ret < 0) { virtual_mailbox_close_internal(mbox); return -1; } - if (index_storage_mailbox_open(box, FALSE) < 0) - return -1; mbox->virtual_ext_id = mail_index_ext_register(mbox->box.index, "virtual", 0,