]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Add imapc_features=delay-login
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Sun, 19 Mar 2017 13:35:14 +0000 (15:35 +0200)
committerGitLab <gitlab@git.dovecot.net>
Sun, 26 Mar 2017 16:15:02 +0000 (19:15 +0300)
The connection to imapc_host is delayed until it's actually needed to be
performed.

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

index 8b704f1ffc16438bd7078f3be0496bf25f8af0dc..a837a78471fd9fdb31f363b4b1f65b541392ae6e 100644 (file)
@@ -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 }
 };
 
index fa48a4c65e0657b05d369d29204967fb0b3d1b29..c8e7edb529073989c1c975771b486992737230ab 100644 (file)
@@ -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,
 };
 /* </settings checks> */
 
index 6744761b8e0aac268bf4e06a0fc10b0ca947fb6c..bc5b1939674805dfa6dfdf12f2c61d873d494b7e 100644 (file)
@@ -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);
        }