From: Timo Sirainen Date: Sun, 19 Mar 2017 13:35:14 +0000 (+0200) Subject: imapc: Add imapc_features=delay-login X-Git-Tag: 2.3.0.rc1~1862 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=30871b77e627d3d6b244305fbea7aeee578f2927;p=thirdparty%2Fdovecot%2Fcore.git imapc: Add imapc_features=delay-login The connection to imapc_host is delayed until it's actually needed to be performed. --- diff --git a/src/lib-storage/index/imapc/imapc-settings.c b/src/lib-storage/index/imapc/imapc-settings.c index 8b704f1ffc..a837a78471 100644 --- a/src/lib-storage/index/imapc/imapc-settings.c +++ b/src/lib-storage/index/imapc/imapc-settings.c @@ -96,6 +96,7 @@ static const struct imapc_feature_list imapc_feature_list[] = { { "fetch-msn-workarounds", IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS }, { "fetch-fix-broken-mails", IMAPC_FEATURE_FETCH_FIX_BROKEN_MAILS }, { "modseq", IMAPC_FEATURE_MODSEQ }, + { "delay-login", IMAPC_FEATURE_DELAY_LOGIN }, { NULL, 0 } }; diff --git a/src/lib-storage/index/imapc/imapc-settings.h b/src/lib-storage/index/imapc/imapc-settings.h index fa48a4c65e..c8e7edb529 100644 --- a/src/lib-storage/index/imapc/imapc-settings.h +++ b/src/lib-storage/index/imapc/imapc-settings.h @@ -15,7 +15,8 @@ enum imapc_features { IMAPC_FEATURE_PROXYAUTH = 0x80, IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS = 0x100, IMAPC_FEATURE_FETCH_FIX_BROKEN_MAILS = 0x200, - IMAPC_FEATURE_MODSEQ = 0x400 + IMAPC_FEATURE_MODSEQ = 0x400, + IMAPC_FEATURE_DELAY_LOGIN = 0x800, }; /* */ diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 6744761b8e..bc5b193967 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -338,7 +338,8 @@ int imapc_storage_client_create(struct mail_namespace *ns, client->client = imapc_client_init(&set); imapc_client_register_untagged(client->client, imapc_storage_client_untagged_cb, client); - if ((ns->flags & NAMESPACE_FLAG_LIST_PREFIX) != 0) { + if ((ns->flags & NAMESPACE_FLAG_LIST_PREFIX) != 0 && + (imapc_set->parsed_features & IMAPC_FEATURE_DELAY_LOGIN) == 0) { /* start logging in immediately */ imapc_storage_client_login(client, ns->user, set.host); }