mirror of
https://github.com/lubosz/overte.git
synced 2025-04-24 11:43:16 +02:00
Merge pull request #9016 from humbletim/script-retry-improvements
Prevent Script retries when HTTP errors are irrecoverable
This commit is contained in:
commit
5c6ab5d0c3
2 changed files with 35 additions and 1 deletions
|
@ -14,6 +14,7 @@
|
|||
#include <QFile>
|
||||
#include <QNetworkReply>
|
||||
#include <QNetworkRequest>
|
||||
#include <QMetaEnum>
|
||||
|
||||
#include <SharedUtil.h>
|
||||
|
||||
|
@ -78,10 +79,36 @@ void HTTPResourceRequest::onRequestFinished() {
|
|||
_loadedFromCache = _reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool();
|
||||
_result = Success;
|
||||
break;
|
||||
|
||||
case QNetworkReply::TimeoutError:
|
||||
_result = Timeout;
|
||||
break;
|
||||
|
||||
case QNetworkReply::ContentNotFoundError: // Script.include('https://httpbin.org/status/404')
|
||||
_result = NotFound;
|
||||
break;
|
||||
|
||||
case QNetworkReply::ProtocolInvalidOperationError: // Script.include('https://httpbin.org/status/400')
|
||||
_result = InvalidURL;
|
||||
break;
|
||||
|
||||
case QNetworkReply::UnknownContentError: // Script.include('QUrl("https://httpbin.org/status/402")')
|
||||
case QNetworkReply::ContentOperationNotPermittedError: //Script.include('https://httpbin.org/status/403')
|
||||
case QNetworkReply::AuthenticationRequiredError: // Script.include('https://httpbin.org/basic-auth/user/passwd')
|
||||
_result = AccessDenied;
|
||||
break;
|
||||
|
||||
case QNetworkReply::RemoteHostClosedError: // Script.include('http://127.0.0.1:22')
|
||||
case QNetworkReply::ConnectionRefusedError: // Script.include(http://127.0.0.1:1')
|
||||
case QNetworkReply::HostNotFoundError: // Script.include('http://foo.bar.highfidelity.io')
|
||||
case QNetworkReply::ServiceUnavailableError: // Script.include('QUrl("https://httpbin.org/status/503")')
|
||||
_result = ServerUnavailable;
|
||||
break;
|
||||
|
||||
case QNetworkReply::UnknownServerError: // Script.include('QUrl("https://httpbin.org/status/504")')
|
||||
case QNetworkReply::InternalServerError: // Script.include('QUrl("https://httpbin.org/status/500")')
|
||||
default:
|
||||
qDebug() << "HTTPResourceRequest error:" << QMetaEnum::fromType<QNetworkReply::NetworkError>().valueToKey(_reply->error());
|
||||
_result = Error;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -202,7 +202,14 @@ void ScriptCache::scriptContentAvailable() {
|
|||
finished = true;
|
||||
qCDebug(scriptengine) << "Done downloading script at:" << url.toString();
|
||||
} else {
|
||||
if (scriptRequest.numRetries < MAX_RETRIES) {
|
||||
auto result = req->getResult();
|
||||
bool irrecoverable =
|
||||
result == ResourceRequest::AccessDenied ||
|
||||
result == ResourceRequest::InvalidURL ||
|
||||
result == ResourceRequest::NotFound ||
|
||||
scriptRequest.numRetries >= MAX_RETRIES;
|
||||
|
||||
if (!irrecoverable) {
|
||||
++scriptRequest.numRetries;
|
||||
|
||||
qDebug() << "Script request failed: " << url;
|
||||
|
|
Loading…
Reference in a new issue