]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
virtual: Fix leaking mailboxes if virtual mailbox can't be opened
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 1 Oct 2021 12:08:45 +0000 (15:08 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 6 Oct 2021 06:04:37 +0000 (06:04 +0000)
Fixes also a crash at deinit:
Panic: file mail-user.c: line 232 (mail_user_deinit): assertion failed: ((*user)->refcount == 1)

src/plugins/virtual/virtual-storage.c

index 2f31503d5391d25e7d0b95ff4962176a82f9edca..a0779cc186da3a8ab460c3e27c031b558b6e6ece 100644 (file)
@@ -495,12 +495,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,