From b816395870e130ffed25a90d641966a1f1da89d1 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Fri, 26 Oct 2012 11:59:28 +0200 Subject: [PATCH] Reconnect automatically in case of swiften backend errors --- backends/swiften/main.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/backends/swiften/main.cpp b/backends/swiften/main.cpp index 6d7340d3..6db0d86c 100644 --- a/backends/swiften/main.cpp +++ b/backends/swiften/main.cpp @@ -63,14 +63,15 @@ class SwiftenPlugin : public NetworkPlugin { void handleSwiftDisconnected(const std::string &user, const boost::optional &error) { std::string message = ""; + bool reconnect = false; if (error) { switch(error->getType()) { - case Swift::ClientError::UnknownError: message = ("Unknown Error"); break; + case Swift::ClientError::UnknownError: message = ("Unknown Error"); reconnect = true; break; case Swift::ClientError::DomainNameResolveError: message = ("Unable to find server"); break; case Swift::ClientError::ConnectionError: message = ("Error connecting to server"); break; - case Swift::ClientError::ConnectionReadError: message = ("Error while receiving server data"); break; - case Swift::ClientError::ConnectionWriteError: message = ("Error while sending data to the server"); break; - case Swift::ClientError::XMLError: message = ("Error parsing server data"); break; + case Swift::ClientError::ConnectionReadError: message = ("Error while receiving server data"); reconnect = true; break; + case Swift::ClientError::ConnectionWriteError: message = ("Error while sending data to the server"); reconnect = true; break; + case Swift::ClientError::XMLError: message = ("Error parsing server data"); reconnect = true; break; case Swift::ClientError::AuthenticationFailedError: message = ("Login/password invalid"); break; case Swift::ClientError::CompressionFailedError: message = ("Error while compressing stream"); break; case Swift::ClientError::ServerVerificationFailedError: message = ("Server verification failed"); break; @@ -97,7 +98,7 @@ class SwiftenPlugin : public NetworkPlugin { } } LOG4CXX_INFO(logger, user << ": Disconnected " << message); - handleDisconnected(user, 3, message); + handleDisconnected(user, reconnect ? 0 : 3, message); boost::shared_ptr client = m_users[user]; if (client) {