summaryrefslogtreecommitdiffstats
path: root/src/plugins/messageservices/imap/imapclient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/messageservices/imap/imapclient.cpp')
-rw-r--r--src/plugins/messageservices/imap/imapclient.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/plugins/messageservices/imap/imapclient.cpp b/src/plugins/messageservices/imap/imapclient.cpp
index 70cd0b9b..205bcc4f 100644
--- a/src/plugins/messageservices/imap/imapclient.cpp
+++ b/src/plugins/messageservices/imap/imapclient.cpp
@@ -1305,11 +1305,7 @@ void ImapClient::transportError(QMailServiceAction::Status::ErrorCode code, cons
void ImapClient::closeConnection()
{
_inactiveTimer.stop();
-
- if ( _protocol.connected() ) {
- emit updateStatus( tr("Logging out") );
- _protocol.sendLogout();
- } else if ( _protocol.inUse() ) {
+ if ( _protocol.inUse() ) {
_protocol.close();
}
}
@@ -1349,7 +1345,13 @@ void ImapClient::connectionInactive()
Q_ASSERT(_closeCount >= 0);
if (_closeCount == 0) {
_rapidClosing = false;
- closeConnection();
+ if ( _protocol.connected()) {
+ emit updateStatus( tr("Logging out") );
+ _protocol.sendLogout();
+ // Client MUST read tagged response, but if connection hangs in logout state newConnection will autoClose.
+ } else {
+ closeConnection();
+ }
} else {
--_closeCount;
_protocol.sendNoop();