diff options
author | Mili Verma <mili.verma@isode.com> | 2015-06-23 13:27:08 (GMT) |
---|---|---|
committer | Kevin Smith <kevin.smith@isode.com> | 2015-06-29 14:52:08 (GMT) |
commit | ac45f360be049242a89ae80258e4ea8350f909ba (patch) | |
tree | 3e3b5fb80edaaa867adfb7873550d934f0b60298 | |
parent | ea41bd07a0e014c12cce144b421abac9f21d1269 (diff) | |
download | swift-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.cpp | 4 | ||||
-rw-r--r-- | Swiften/Client/ClientError.h | 10 | ||||
-rw-r--r-- | Swiften/Client/ClientSession.h | 3 | ||||
-rw-r--r-- | Swiften/Client/CoreClient.cpp | 1 |
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()) { |