diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-02-25 12:26:04 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-02-25 12:26:04 +0000 |
| commit | 3d9042871ead55f48023f17b0f6f5fbb1bfae259 (patch) | |
| tree | 0d91f995e57e109d86c069cff03f4bef8eb6d3e9 /source/QXmppReconnectionManager.cpp | |
| parent | 379d128e32348181e35999678fe4733bb64c4d8b (diff) | |
| download | qxmpp-3d9042871ead55f48023f17b0f6f5fbb1bfae259.tar.gz | |
don't reconnect to XMPP server after a conflict was received (issue #41)
Diffstat (limited to 'source/QXmppReconnectionManager.cpp')
| -rw-r--r-- | source/QXmppReconnectionManager.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source/QXmppReconnectionManager.cpp b/source/QXmppReconnectionManager.cpp index c135860b..23993402 100644 --- a/source/QXmppReconnectionManager.cpp +++ b/source/QXmppReconnectionManager.cpp @@ -28,6 +28,7 @@ QXmppReconnectionManager::QXmppReconnectionManager(QXmppClient* client) : QObject(client), + m_receivedConflict(false), m_reconnectionTries(0), m_timer(this), m_client(client) @@ -39,12 +40,19 @@ QXmppReconnectionManager::QXmppReconnectionManager(QXmppClient* client) : void QXmppReconnectionManager::connected() { + m_receivedConflict = false; m_reconnectionTries = 0; } void QXmppReconnectionManager::error(QXmppClient::Error error) { - if(m_client && error == QXmppClient::SocketError) + if(m_client && error == QXmppClient::XmppStreamError) + { + // if we receive a resource conflict, inhibit reconnection + if(m_client->getXmppStreamError() == QXmppClient::ConflictStreamError) + m_receivedConflict = true; + } + else if(m_client && error == QXmppClient::SocketError && !m_receivedConflict) { int time = getNextReconnectingInTime(); @@ -82,5 +90,6 @@ void QXmppReconnectionManager::reconnect() void QXmppReconnectionManager::cancelReconnection() { m_timer.stop(); + m_receivedConflict = false; m_reconnectionTries = 0; } |
