From ad233677b8898814570d163db0755c327a4577e0 Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Wed, 12 Sep 2018 18:31:01 -0700 Subject: [PATCH] adding changes for overriding host change for error state --- libraries/networking/src/AddressManager.cpp | 5 ++++- libraries/networking/src/DomainHandler.cpp | 8 +++++--- libraries/networking/src/DomainHandler.h | 2 ++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/libraries/networking/src/AddressManager.cpp b/libraries/networking/src/AddressManager.cpp index 9e5cbcaa7b..ebb4e325e3 100644 --- a/libraries/networking/src/AddressManager.cpp +++ b/libraries/networking/src/AddressManager.cpp @@ -269,6 +269,7 @@ bool AddressManager::handleUrl(const QUrl& lookupUrl, LookupTrigger trigger) { // save the last visited domain URL. _lastVisitedURL = lookupUrl; + auto lastVisitedURLStr = lookupUrl.toString().toStdString(); // a network address lookup clears the previous lookup since we don't expect to re-attempt it _previousAPILookup.clear(); @@ -816,8 +817,10 @@ bool AddressManager::setDomainInfo(const QUrl& domainURL, LookupTrigger trigger) const QString hostname = domainURL.host(); quint16 port = domainURL.port(); bool emitHostChanged { false }; + // Check if domain handler is in error state. always emit host changed if true. + bool isInErrorState = DependencyManager::get()->getDomainHandler().isInErrorState(); - if (domainURL != _domainURL) { + if (domainURL != _domainURL || isInErrorState) { addCurrentAddressToHistory(trigger); emitHostChanged = true; } diff --git a/libraries/networking/src/DomainHandler.cpp b/libraries/networking/src/DomainHandler.cpp index a432b41a0d..c20a7057f8 100644 --- a/libraries/networking/src/DomainHandler.cpp +++ b/libraries/networking/src/DomainHandler.cpp @@ -56,7 +56,7 @@ 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 + // stop the refresh timer if redirected to the error domain connect(this, &DomainHandler::redirectToErrorDomainURL, &_apiRefreshTimer, &QTimer::stop); } @@ -109,14 +109,16 @@ void DomainHandler::softReset() { QMetaObject::invokeMethod(&_settingsTimer, "stop"); // restart the API refresh timer in case we fail to connect and need to refresh information - if (!_isInErrorState) + if (!_isInErrorState) { QMetaObject::invokeMethod(&_apiRefreshTimer, "start"); + } _isInErrorState = false; } void DomainHandler::hardReset() { - if (!_isInErrorState) + if (!_isInErrorState) { emit resetting(); + } softReset(); diff --git a/libraries/networking/src/DomainHandler.h b/libraries/networking/src/DomainHandler.h index 6381dbb546..3d361482ac 100644 --- a/libraries/networking/src/DomainHandler.h +++ b/libraries/networking/src/DomainHandler.h @@ -173,6 +173,8 @@ public slots: // sets domain handler in error state. void setRedirectErrorState(QUrl errorUrl, int reasonCode); + bool isInErrorState() { return _isInErrorState; } + private slots: void completedHostnameLookup(const QHostInfo& hostInfo); void completedIceServerHostnameLookup();