]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Fix assert-crash on some connect failures
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 20 Jan 2017 16:19:05 +0000 (18:19 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 20 Jan 2017 16:19:05 +0000 (18:19 +0200)
imapc_storage_has_modseqs() causes imapc_client_get_capabilities() to be
called, which assert-crashes if there isn't a valid connection:

Panic: file imapc-client.c: line 438 (imapc_client_get_capabilities): assertion failed: (conn != NULL)

src/lib-storage/index/imapc/imapc-storage.c

index 0294ce22d471a896a777a01fcc0a1941d24ad9cc..6eb5d8616ef24db7c06bd9f213406270642d2972 100644 (file)
@@ -598,6 +598,13 @@ int imapc_mailbox_select(struct imapc_mailbox *mbox)
                return -1;
        }
 
+       if (imapc_storage_has_modseqs(mbox->storage)) {
+               if (!array_is_created(&mbox->rseq_modseqs))
+                       i_array_init(&mbox->rseq_modseqs, 32);
+               else
+                       array_clear(&mbox->rseq_modseqs);
+       }
+
        mbox->client_box =
                imapc_client_mailbox_open(mbox->storage->client->client, mbox);
        imapc_client_mailbox_set_reopen_cb(mbox->client_box,
@@ -647,13 +654,6 @@ static int imapc_mailbox_open(struct mailbox *box)
                return -1;
        }
 
-       if (imapc_storage_has_modseqs(mbox->storage)) {
-               if (!array_is_created(&mbox->rseq_modseqs))
-                       i_array_init(&mbox->rseq_modseqs, 32);
-               else
-                       array_clear(&mbox->rseq_modseqs);
-       }
-
        if (imapc_mailbox_select(mbox) < 0) {
                mailbox_close(box);
                return -1;