summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Llewellyn-Jones <david.llewellyn-jones@jolla.com>2020-01-17 18:41:44 +0200
committerChris Adams <chris.adams@qinetic.com.au>2021-04-09 13:35:29 +1000
commit4ae3201bf07473bf3746b8faf56744055fceffa7 (patch)
tree243777833eacaf0a515acd3fb6af92e02fbdfd81
parent89de2cb8c12511c707f13ef47e14b6f564aaa001 (diff)
Check if IDLE connection needs to be established after login
Some servers only advertise full capabilities after sucessful login, so we need to check if IDLE connection needs to be established in such cases. Created by Valério Valério <valerio.valerio@jolla.com>, 11 May 2015. Change-Id: I307f7be0e07b1639c80f01a3205bcff9de96525a Reviewed-by: Christopher Adams <chris.adams@jolla.com>
-rw-r--r--src/plugins/messageservices/imap/imapclient.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/messageservices/imap/imapclient.cpp b/src/plugins/messageservices/imap/imapclient.cpp
index 5154234c..a4100fb7 100644
--- a/src/plugins/messageservices/imap/imapclient.cpp
+++ b/src/plugins/messageservices/imap/imapclient.cpp
@@ -682,6 +682,16 @@ void ImapClient::commandTransition(ImapCommand command, OperationStatus status)
qWarning() << "Unable to update account" << account.id() << "to set imap4 configuration";
}
}
+ // After logging in server capabilities reported may change so we need to
+ // check if IDLE is already established, when enabled
+ if (!_waitingForIdle && !_idlesEstablished
+ && _protocol.supportsCapability("IDLE")
+ && !_waitingForIdleFolderIds.isEmpty()
+ && _pushConnectionsReserved) {
+ _waitingForIdle = true;
+ monitor(_waitingForIdleFolderIds);
+ emit updateStatus( tr("Logging in idle connection" ) );
+ }
bool compressCapable(_protocol.capabilities().contains("COMPRESS=DEFLATE", Qt::CaseInsensitive));
if (!_protocol.encrypted() && QMFALLOWCOMPRESS && compressCapable && !_protocol.compress()) {