adding fix for getting DomainHandler into error state

This commit is contained in:
Wayne Chen 2018-09-12 15:42:55 -07:00
parent e243792cac
commit 49f26d968a
2 changed files with 13 additions and 7 deletions

View file

@ -55,6 +55,9 @@ DomainHandler::DomainHandler(QObject* parent) :
// stop the refresh timer if we connect to a domain
connect(this, &DomainHandler::connectedToDomain, &_apiRefreshTimer, &QTimer::stop);
// stop the refresh timer if we connect to a domain
connect(this, &DomainHandler::redirectToErrorDomainURL, &_apiRefreshTimer, &QTimer::stop);
}
void DomainHandler::disconnect() {
@ -99,7 +102,6 @@ void DomainHandler::softReset() {
clearSettings();
_isInErrorState = false;
_connectionDenialsSinceKeypairRegen = 0;
_checkInPacketsSinceLastReply = 0;
@ -107,11 +109,14 @@ void DomainHandler::softReset() {
QMetaObject::invokeMethod(&_settingsTimer, "stop");
// restart the API refresh timer in case we fail to connect and need to refresh information
QMetaObject::invokeMethod(&_apiRefreshTimer, "start");
if (!_isInErrorState)
QMetaObject::invokeMethod(&_apiRefreshTimer, "start");
_isInErrorState = false;
}
void DomainHandler::hardReset() {
emit resetting();
if (!_isInErrorState)
emit resetting();
softReset();
@ -338,6 +343,7 @@ void DomainHandler::loadedErrorDomain(std::map<QString, QString> namedPaths) {
void DomainHandler::setRedirectErrorState(QUrl errorUrl, int reasonCode) {
_errorDomainURL = errorUrl;
_lastDomainConnectionError = reasonCode;
_isInErrorState = true;
emit redirectToErrorDomainURL(_errorDomainURL);
}
@ -480,9 +486,8 @@ void DomainHandler::processDomainServerConnectionDeniedPacket(QSharedPointer<Rec
emit domainConnectionRefused(reasonMessage, (int)reasonCode, extraInfo);
#else
if (reasonCode == ConnectionRefusedReason::ProtocolMismatch || reasonCode == ConnectionRefusedReason::NotAuthorized) {
_isInErrorState = true;
// ingest the error - this is a "hard" connection refusal.
emit redirectToErrorDomainURL(_errorDomainURL);
setRedirectErrorState(_errorDomainURL, (int)reasonCode);
} else {
emit domainConnectionRefused(reasonMessage, (int)reasonCode, extraInfo);
}

View file

@ -87,8 +87,6 @@ public:
void connectedToServerless(std::map<QString, QString> namedPaths);
void loadedErrorDomain(std::map<QString, QString> namedPaths);
// sets domain handler in error state.
void setRedirectErrorState(QUrl errorUrl, int reasonCode);
QString getViewPointFromNamedPath(QString namedPath);
@ -172,6 +170,9 @@ public slots:
void processICEResponsePacket(QSharedPointer<ReceivedMessage> icePacket);
void processDomainServerConnectionDeniedPacket(QSharedPointer<ReceivedMessage> message);
// sets domain handler in error state.
void setRedirectErrorState(QUrl errorUrl, int reasonCode);
private slots:
void completedHostnameLookup(const QHostInfo& hostInfo);
void completedIceServerHostnameLookup();