From aa836aa4b55d9771ecc5ad0623baf8cfc18c04c7 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 20 Nov 2015 11:44:04 -0800 Subject: [PATCH] add a script request timeout --- assignment-client/src/Agent.cpp | 19 ++++++++++++++++--- assignment-client/src/Agent.h | 1 + 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 5ec4b91fa6..cb3f4d9b05 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -163,6 +163,12 @@ void Agent::requestScript() { QNetworkRequest networkRequest = QNetworkRequest(scriptURL); networkRequest.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT); + // setup a timeout for script request + static const int SCRIPT_TIMEOUT_MS = 10000; + _scriptRequestTimeout = new QTimer(this); + connect(_scriptRequestTimeout, &QTimer::timeout, this, &Agent::scriptRequestFinished); + _scriptRequestTimeout->start(SCRIPT_TIMEOUT_MS); + qDebug() << "Downloading script at" << scriptURL.toString(); QNetworkReply* reply = networkAccessManager.get(networkRequest); connect(reply, &QNetworkReply::finished, this, &Agent::scriptRequestFinished); @@ -170,8 +176,10 @@ void Agent::requestScript() { void Agent::scriptRequestFinished() { auto reply = qobject_cast(sender()); + + _scriptRequestTimeout->stop(); - if (reply->error() != QNetworkReply::NoError) { + if (reply && reply->error() == QNetworkReply::NoError) { _scriptContents = reply->readAll(); qDebug() << "Downloaded script:" << _scriptContents; @@ -179,8 +187,13 @@ void Agent::scriptRequestFinished() { // to return before calling executeScript QMetaObject::invokeMethod(this, "executeScript", Qt::QueuedConnection); } else { - qDebug() << "Failed to download script at" << reply->url().toString() << " - bailing on assignment."; - qDebug() << "QNetworkReply error was" << reply->errorString(); + if (reply) { + qDebug() << "Failed to download script at" << reply->url().toString() << " - bailing on assignment."; + qDebug() << "QNetworkReply error was" << reply->errorString(); + } else { + qDebug() << "Failed to download script - request timed out. Bailing on assignment."; + } + setFinished(true); } diff --git a/assignment-client/src/Agent.h b/assignment-client/src/Agent.h index 205d4d4a80..6819976633 100644 --- a/assignment-client/src/Agent.h +++ b/assignment-client/src/Agent.h @@ -78,6 +78,7 @@ private: void sendAvatarBillboardPacket(); QString _scriptContents; + QTimer* _scriptRequestTimeout { nullptr }; bool _isListeningToAudioStream = false; Sound* _avatarSound = nullptr; int _numAvatarSoundSentBytes = 0;