]> 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>
Tue, 5 Oct 2021 09:47:38 +0000 (12:47 +0300)
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 a01510f91787cf34ef949ab065c7ca4e38cc3e84..96435756147767244fbdbc70b3466e472da148ce 100644 (file)
@@ -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,