summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMili Verma <mili.verma@isode.com>2015-06-23 13:27:08 (GMT)
committerKevin Smith <kevin.smith@isode.com>2015-06-29 14:52:08 (GMT)
commitac45f360be049242a89ae80258e4ea8350f909ba (patch)
tree3e3b5fb80edaaa867adfb7873550d934f0b60298
parentea41bd07a0e014c12cce144b421abac9f21d1269 (diff)
downloadswift-ac45f360be049242a89ae80258e4ea8350f909ba.zip
swift-ac45f360be049242a89ae80258e4ea8350f909ba.tar.bz2
Pass an optional error code
This patch creates and passes on an optional boost::system::error_code variable which contains more error info which can be displayed in case of an error. Test-information: Tested using WIP code on Windows. Change-Id: I285b8aec5e9c00d3a8e0d8cc0d5e7b4c5d94c099
-rw-r--r--Swift/Controllers/MainController.cpp4
-rw-r--r--Swiften/Client/ClientError.h10
-rw-r--r--Swiften/Client/ClientSession.h3
-rw-r--r--Swiften/Client/CoreClient.cpp1
4 files changed, 16 insertions, 2 deletions
diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp
index c6b6dfc..95094f2 100644
--- a/Swift/Controllers/MainController.cpp
+++ b/Swift/Controllers/MainController.cpp
@@ -662,6 +662,10 @@ void MainController::handleDisconnected(const boost::optional<ClientError>& erro
}
}
+ if (!message.empty() && error->getErrorCode()) {
+ message = str(format(QT_TRANSLATE_NOOP("", "%1% (%2%)")) % message % error->getErrorCode()->message());
+ }
+
if (forceReconnectAfterCertificateTrust && settings_->getSetting(SettingConstants::FORGET_PASSWORDS)) {
forceReconnectAfterCertificateTrust = false;
forceSignout = true;
diff --git a/Swiften/Client/ClientError.h b/Swiften/Client/ClientError.h
index 5277a0e..19de42b 100644
--- a/Swiften/Client/ClientError.h
+++ b/Swiften/Client/ClientError.h
@@ -1,11 +1,14 @@
/*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#pragma once
+#include <boost/shared_ptr.hpp>
+#include <boost/system/system_error.hpp>
+
namespace Swift {
class ClientError {
public:
@@ -51,7 +54,12 @@ namespace Swift {
Type getType() const { return type_; }
+ void setErrorCode(boost::shared_ptr<boost::system::error_code> errorCode) { errorCode_ = errorCode; }
+
+ boost::shared_ptr<boost::system::error_code> getErrorCode() const { return errorCode_; }
+
private:
Type type_;
+ boost::shared_ptr<boost::system::error_code> errorCode_;
};
}
diff --git a/Swiften/Client/ClientSession.h b/Swiften/Client/ClientSession.h
index 61de014..9bbc3f2 100644
--- a/Swiften/Client/ClientSession.h
+++ b/Swiften/Client/ClientSession.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
@@ -57,6 +57,7 @@ namespace Swift {
TLSError,
StreamError
} type;
+ boost::shared_ptr<boost::system::error_code> errorCode;
Error(Type type) : type(type) {}
};
diff --git a/Swiften/Client/CoreClient.cpp b/Swiften/Client/CoreClient.cpp
index c91e5c5..baebd4a 100644
--- a/Swiften/Client/CoreClient.cpp
+++ b/Swiften/Client/CoreClient.cpp
@@ -259,6 +259,7 @@ void CoreClient::handleSessionFinished(boost::shared_ptr<Error> error) {
clientError = ClientError(ClientError::StreamError);
break;
}
+ clientError.setErrorCode(actualError->errorCode);
}
else if (boost::shared_ptr<TLSError> actualError = boost::dynamic_pointer_cast<TLSError>(error)) {
switch(actualError->getType()) {