From: Timo Sirainen Date: Fri, 20 Jan 2017 16:19:05 +0000 (+0200) Subject: imapc: Fix assert-crash on some connect failures X-Git-Tag: 2.3.0.rc1~2277 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fc452ed724837734a04214bc8f9f112c603b28f7;p=thirdparty%2Fdovecot%2Fcore.git imapc: Fix assert-crash on some connect failures 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) --- diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 0294ce22d4..6eb5d8616e 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -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;