From b30a008162b08a0e7ad0bfdbe1bb57d1c496e384 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 27 Aug 2015 12:48:55 -0700 Subject: [PATCH 01/11] Fix bug with NetworkTexture occasionally breaking on assert --- libraries/networking/src/ResourceCache.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index c24c2f5075..7ed5866707 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -206,7 +206,7 @@ Resource::Resource(const QUrl& url, bool delayLoad) : // start loading immediately unless instructed otherwise if (!(_startedLoading || delayLoad)) { - QTimer::singleShot(1, this, &Resource::attemptRequest); + QTimer::singleShot(0, this, &Resource::ensureLoading); } } @@ -333,8 +333,6 @@ void Resource::reinsert() { void Resource::makeRequest() { Q_ASSERT(!_request); - static const int REPLY_TIMEOUT_MS = 5000; - _request = ResourceManager::createResourceRequest(this, _activeUrl); if (!_request) { @@ -366,7 +364,7 @@ void Resource::handleReplyFinished() { auto result = _request->getResult(); if (result == ResourceRequest::SUCCESS) { _data = _request->getData(); - qDebug() << "Reqeust finsihed for " << _url << ", " << _activeUrl; + qDebug() << "Request finished for " << _url << ", " << _activeUrl; _request->disconnect(this); _request->deleteLater(); @@ -408,7 +406,8 @@ void Resource::handleReplyFinished() { break; } - emit failed(QNetworkReply::UnknownNetworkError); + auto error = result == ResourceRequest::TIMEOUT ? QNetworkReply::TimeoutError : QNetworkReply::UnknownNetworkError; + emit failed(error); if (!retry) { ResourceCache::requestCompleted(this); From 750080fe66582ddf6aee15b42e5df5b2f5a19624 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 27 Aug 2015 12:52:01 -0700 Subject: [PATCH 02/11] Remove early return in Model::restoreJointPosition --- libraries/render-utils/src/Model.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index b4f3949a93..9c6dcdfc9c 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -1356,7 +1356,6 @@ void Model::inverseKinematics(int endIndex, glm::vec3 targetPosition, const glm: bool Model::restoreJointPosition(int jointIndex, float fraction, float priority) { QString url = _url.path(); const FBXGeometry& geometry = _geometry->getFBXGeometry(); - return true; const QVector& freeLineage = geometry.joints.at(jointIndex).freeLineage; return _rig->restoreJointPosition(jointIndex, fraction, priority, freeLineage); } From 33d6f561eb94238b31b5436990057eacae75a797 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 27 Aug 2015 12:52:11 -0700 Subject: [PATCH 03/11] Reintroduce request limit in ResourceCache --- libraries/networking/src/ResourceCache.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index 7ed5866707..e4ff88b9e3 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -154,12 +154,12 @@ void ResourceCache::clearUnusedResource() { void ResourceCache::attemptRequest(Resource* resource) { auto sharedItems = DependencyManager::get(); - // if (_requestLimit <= 0) { - // qDebug() << "REQUEST LIMIT REACHED (" << _requestLimit << "), queueing: " << resource->getURL(); - // // wait until a slot becomes available - // sharedItems->_pendingRequests.append(resource); - // return; - // } + if (_requestLimit <= 0) { + qDebug() << "REQUEST LIMIT REACHED (" << _requestLimit << "), queueing: " << resource->getURL(); + // wait until a slot becomes available + sharedItems->_pendingRequests.append(resource); + return; + } qDebug() << "-- Decreasing limit for : " << resource->getURL(); _requestLimit--; sharedItems->_loadingRequests.append(resource); From 12d3cf557abe62c2ce1923f9f7cab0606bd457de Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 27 Aug 2015 12:58:57 -0700 Subject: [PATCH 04/11] Remove assert in ScriptCache --- libraries/script-engine/src/ScriptCache.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/libraries/script-engine/src/ScriptCache.cpp b/libraries/script-engine/src/ScriptCache.cpp index 9409c10652..e3d12313dc 100644 --- a/libraries/script-engine/src/ScriptCache.cpp +++ b/libraries/script-engine/src/ScriptCache.cpp @@ -27,8 +27,6 @@ ScriptCache::ScriptCache(QObject* parent) { } QString ScriptCache::getScript(const QUrl& url, ScriptUser* scriptUser, bool& isPending, bool reload) { - //assert(!_scriptCache.contains(url) || !reload); - QString scriptContents; if (_scriptCache.contains(url) && !reload) { qCDebug(scriptengine) << "Found script in cache:" << url.toString(); From b401a62d7f006feb7a5d98f4df5e2d4ae89a8c11 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 27 Aug 2015 13:57:00 -0700 Subject: [PATCH 05/11] Disable request limiting for ATP requests in ResourceCache --- libraries/networking/src/ResourceCache.cpp | 10 ++++++++-- libraries/networking/src/ResourceManager.cpp | 6 ------ libraries/networking/src/ResourceManager.h | 6 ++++++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index e4ff88b9e3..db506e5320 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -161,7 +161,11 @@ void ResourceCache::attemptRequest(Resource* resource) { return; } qDebug() << "-- Decreasing limit for : " << resource->getURL(); - _requestLimit--; + + // Disable request limiting for ATP + if (resource->getURL() != URL_SCHEME_ATP) { + _requestLimit--; + } sharedItems->_loadingRequests.append(resource); resource->makeRequest(); } @@ -171,7 +175,9 @@ void ResourceCache::requestCompleted(Resource* resource) { auto sharedItems = DependencyManager::get(); sharedItems->_loadingRequests.removeOne(resource); qDebug() << "++ Increasing limit after finished: " << resource->getURL(); - _requestLimit++; + if (resource->getURL() != URL_SCHEME_ATP) { + _requestLimit++; + } // look for the highest priority pending request int highestIndex = -1; diff --git a/libraries/networking/src/ResourceManager.cpp b/libraries/networking/src/ResourceManager.cpp index b8e3eeeae7..648ce8376e 100644 --- a/libraries/networking/src/ResourceManager.cpp +++ b/libraries/networking/src/ResourceManager.cpp @@ -16,12 +16,6 @@ #include -const QString URL_SCHEME_FILE = "file"; -const QString URL_SCHEME_HTTP = "http"; -const QString URL_SCHEME_HTTPS = "https"; -const QString URL_SCHEME_FTP = "ftp"; -const QString URL_SCHEME_ATP = "atp"; - ResourceRequest* ResourceManager::createResourceRequest(QObject* parent, const QUrl& url) { auto scheme = url.scheme(); if (scheme == URL_SCHEME_FILE) { diff --git a/libraries/networking/src/ResourceManager.h b/libraries/networking/src/ResourceManager.h index 1cb6b08a79..e31577423b 100644 --- a/libraries/networking/src/ResourceManager.h +++ b/libraries/networking/src/ResourceManager.h @@ -15,6 +15,12 @@ #include "ResourceRequest.h" +const QString URL_SCHEME_FILE = "file"; +const QString URL_SCHEME_HTTP = "http"; +const QString URL_SCHEME_HTTPS = "https"; +const QString URL_SCHEME_FTP = "ftp"; +const QString URL_SCHEME_ATP = "atp"; + class ResourceManager { public: static ResourceRequest* createResourceRequest(QObject* parent, const QUrl& url); From 4fcfd5b8f8379b3868e9f32282778cc3ceb004ac Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 27 Aug 2015 13:58:28 -0700 Subject: [PATCH 06/11] Fix indentation --- libraries/networking/src/udt/PacketList.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/udt/PacketList.cpp b/libraries/networking/src/udt/PacketList.cpp index 98316ee0ab..7b90276b62 100644 --- a/libraries/networking/src/udt/PacketList.cpp +++ b/libraries/networking/src/udt/PacketList.cpp @@ -143,7 +143,7 @@ qint64 PacketList::writeData(const char* data, qint64 maxSize) { // this is an unsupported case - the segment is bigger than the size of an individual packet // but the PacketList is not going to be sent ordered qDebug() << "Error in PacketList::writeData - attempted to write a segment to an unordered packet that is" - << "larger than the payload size."; + << "larger than the payload size."; Q_ASSERT(false); } From 24eef654e0e64f754956eda0d4bf4cc968695e2e Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 27 Aug 2015 14:11:29 -0700 Subject: [PATCH 07/11] Remove unnecessary debug --- libraries/render-utils/src/TextureCache.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/render-utils/src/TextureCache.cpp b/libraries/render-utils/src/TextureCache.cpp index 1fba515cbe..4954629d86 100644 --- a/libraries/render-utils/src/TextureCache.cpp +++ b/libraries/render-utils/src/TextureCache.cpp @@ -294,7 +294,6 @@ public: void ImageReader::run() { QSharedPointer texture = _texture.toStrongRef(); if (texture.isNull()) { - qDebug() << "TEXTURE IS NULL"; return; } From 755c33e5516af0fb021fa0c35890a5f291e22ecc Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 27 Aug 2015 14:11:40 -0700 Subject: [PATCH 08/11] Remove unused variable --- libraries/render-utils/src/Model.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 9c6dcdfc9c..c2d723a323 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -1354,7 +1354,6 @@ void Model::inverseKinematics(int endIndex, glm::vec3 targetPosition, const glm: } bool Model::restoreJointPosition(int jointIndex, float fraction, float priority) { - QString url = _url.path(); const FBXGeometry& geometry = _geometry->getFBXGeometry(); const QVector& freeLineage = geometry.joints.at(jointIndex).freeLineage; return _rig->restoreJointPosition(jointIndex, fraction, priority, freeLineage); From 1da9eeab1f5b22c3609fae802f6a03f80f1db248 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 27 Aug 2015 14:27:29 -0700 Subject: [PATCH 09/11] handle double handshake in Connection --- libraries/networking/src/udt/Connection.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libraries/networking/src/udt/Connection.cpp b/libraries/networking/src/udt/Connection.cpp index f1b69e0039..61cf7d6e74 100644 --- a/libraries/networking/src/udt/Connection.cpp +++ b/libraries/networking/src/udt/Connection.cpp @@ -620,8 +620,12 @@ void Connection::processNAK(std::unique_ptr controlPacket) { } void Connection::processHandshake(std::unique_ptr controlPacket) { - // server sent us a handshake - we need to assume this means state should be reset - resetReceiveState(); + + if (!_hasReceivedHandshake || _hasReceivedFirstPacket) { + // server sent us a handshake - we need to assume this means state should be reset + // as long as we haven't received a handshake yet or we have and we've received some data + resetReceiveState(); + } // immediately respond with a handshake ACK static auto handshakeACK = ControlPacket::create(ControlPacket::HandshakeACK, 0); From 5aa5bca8f7d566b42d48faba7e365c6a947059bf Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 27 Aug 2015 14:29:54 -0700 Subject: [PATCH 10/11] Add path to headers --- assignment-client/src/assets/AssetServer.cpp | 1 + assignment-client/src/assets/AssetServer.h | 1 + assignment-client/src/assets/SendAssetTask.cpp | 1 + assignment-client/src/assets/SendAssetTask.h | 1 + libraries/networking/src/AssetClient.cpp | 1 + libraries/networking/src/AssetClient.h | 1 + libraries/networking/src/AssetRequest.cpp | 1 + libraries/networking/src/AssetRequest.h | 1 + libraries/networking/src/AssetResourceRequest.cpp | 1 + libraries/networking/src/AssetResourceRequest.h | 1 + libraries/networking/src/AssetUtils.h | 1 + libraries/networking/src/FileResourceRequest.cpp | 1 + libraries/networking/src/FileResourceRequest.h | 1 + libraries/networking/src/HTTPResourceRequest.cpp | 1 + libraries/networking/src/HTTPResourceRequest.h | 1 + libraries/networking/src/ResourceManager.cpp | 1 + libraries/networking/src/ResourceManager.h | 1 + libraries/networking/src/ResourceRequest.cpp | 1 + libraries/networking/src/ResourceRequest.h | 1 + 19 files changed, 19 insertions(+) diff --git a/assignment-client/src/assets/AssetServer.cpp b/assignment-client/src/assets/AssetServer.cpp index c6ad9f0f4d..a5ad2962f8 100644 --- a/assignment-client/src/assets/AssetServer.cpp +++ b/assignment-client/src/assets/AssetServer.cpp @@ -1,5 +1,6 @@ // // AssetServer.cpp +// assignment-client/src/assets // // Created by Ryan Huffman on 2015/07/21 // Copyright 2015 High Fidelity, Inc. diff --git a/assignment-client/src/assets/AssetServer.h b/assignment-client/src/assets/AssetServer.h index 07e0680c4f..e214be1eda 100644 --- a/assignment-client/src/assets/AssetServer.h +++ b/assignment-client/src/assets/AssetServer.h @@ -1,5 +1,6 @@ // // AssetServer.h +// assignment-client/src/assets // // Created by Ryan Huffman on 2015/07/21 // Copyright 2015 High Fidelity, Inc. diff --git a/assignment-client/src/assets/SendAssetTask.cpp b/assignment-client/src/assets/SendAssetTask.cpp index f30689b042..8516218681 100644 --- a/assignment-client/src/assets/SendAssetTask.cpp +++ b/assignment-client/src/assets/SendAssetTask.cpp @@ -1,5 +1,6 @@ // // SendAssetTask.cpp +// assignment-client/src/assets // // Created by Ryan Huffman on 2015/08/26 // Copyright 2015 High Fidelity, Inc. diff --git a/assignment-client/src/assets/SendAssetTask.h b/assignment-client/src/assets/SendAssetTask.h index 7dd3616f83..6b6c555326 100644 --- a/assignment-client/src/assets/SendAssetTask.h +++ b/assignment-client/src/assets/SendAssetTask.h @@ -1,5 +1,6 @@ // // SendAssetTask.h +// assignment-client/src/assets // // Created by Ryan Huffman on 2015/08/26 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/AssetClient.cpp b/libraries/networking/src/AssetClient.cpp index f424171766..fa277d72f4 100644 --- a/libraries/networking/src/AssetClient.cpp +++ b/libraries/networking/src/AssetClient.cpp @@ -1,5 +1,6 @@ // // AssetClient.cpp +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/21 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/AssetClient.h b/libraries/networking/src/AssetClient.h index 0e81c6cfa2..a397c500e3 100644 --- a/libraries/networking/src/AssetClient.h +++ b/libraries/networking/src/AssetClient.h @@ -1,5 +1,6 @@ // // AssetClient.h +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/21 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/AssetRequest.cpp b/libraries/networking/src/AssetRequest.cpp index 87e39e1edd..c49d178412 100644 --- a/libraries/networking/src/AssetRequest.cpp +++ b/libraries/networking/src/AssetRequest.cpp @@ -1,5 +1,6 @@ // // AssetRequest.cpp +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/24 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/AssetRequest.h b/libraries/networking/src/AssetRequest.h index d1cc9c9b33..6e0738c333 100644 --- a/libraries/networking/src/AssetRequest.h +++ b/libraries/networking/src/AssetRequest.h @@ -1,5 +1,6 @@ // // AssetRequest.h +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/24 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/AssetResourceRequest.cpp b/libraries/networking/src/AssetResourceRequest.cpp index 5a0af8ef1f..bdb6b51378 100644 --- a/libraries/networking/src/AssetResourceRequest.cpp +++ b/libraries/networking/src/AssetResourceRequest.cpp @@ -1,5 +1,6 @@ // // AssetResourceRequest.cpp +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/23 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/AssetResourceRequest.h b/libraries/networking/src/AssetResourceRequest.h index 2cfd1d28b7..fb9c25e092 100644 --- a/libraries/networking/src/AssetResourceRequest.h +++ b/libraries/networking/src/AssetResourceRequest.h @@ -1,5 +1,6 @@ // // AssetResourceRequest.h +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/23 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/AssetUtils.h b/libraries/networking/src/AssetUtils.h index cc5b2a281f..4018b5c96b 100644 --- a/libraries/networking/src/AssetUtils.h +++ b/libraries/networking/src/AssetUtils.h @@ -1,5 +1,6 @@ // // AssetUtils.h +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/30 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/FileResourceRequest.cpp b/libraries/networking/src/FileResourceRequest.cpp index 8bd7ecf94e..d8b8d962f5 100644 --- a/libraries/networking/src/FileResourceRequest.cpp +++ b/libraries/networking/src/FileResourceRequest.cpp @@ -1,5 +1,6 @@ // // FileResourceRequest.cpp +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/23 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/FileResourceRequest.h b/libraries/networking/src/FileResourceRequest.h index 7618311626..4ff0d2ecf2 100644 --- a/libraries/networking/src/FileResourceRequest.h +++ b/libraries/networking/src/FileResourceRequest.h @@ -1,5 +1,6 @@ // // FileResourceRequest.h +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/23 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/HTTPResourceRequest.cpp b/libraries/networking/src/HTTPResourceRequest.cpp index cf074eb98b..22f55cd641 100644 --- a/libraries/networking/src/HTTPResourceRequest.cpp +++ b/libraries/networking/src/HTTPResourceRequest.cpp @@ -1,5 +1,6 @@ // // HTTPResourceRequest.cpp +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/23 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/HTTPResourceRequest.h b/libraries/networking/src/HTTPResourceRequest.h index c42204f3e9..09c94314d6 100644 --- a/libraries/networking/src/HTTPResourceRequest.h +++ b/libraries/networking/src/HTTPResourceRequest.h @@ -1,5 +1,6 @@ // // HTTPResourceRequest.h +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/23 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/ResourceManager.cpp b/libraries/networking/src/ResourceManager.cpp index 648ce8376e..ded3dfe222 100644 --- a/libraries/networking/src/ResourceManager.cpp +++ b/libraries/networking/src/ResourceManager.cpp @@ -1,5 +1,6 @@ // // ResourceManager.cpp +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/23 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/ResourceManager.h b/libraries/networking/src/ResourceManager.h index e31577423b..3748036c8e 100644 --- a/libraries/networking/src/ResourceManager.h +++ b/libraries/networking/src/ResourceManager.h @@ -1,5 +1,6 @@ // // ResourceManager.h +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/23 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/ResourceRequest.cpp b/libraries/networking/src/ResourceRequest.cpp index 44bfaae254..d56033670b 100644 --- a/libraries/networking/src/ResourceRequest.cpp +++ b/libraries/networking/src/ResourceRequest.cpp @@ -1,5 +1,6 @@ // // ResourceRequest.cpp +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/23 // Copyright 2015 High Fidelity, Inc. diff --git a/libraries/networking/src/ResourceRequest.h b/libraries/networking/src/ResourceRequest.h index 458a859d16..ac13523e96 100644 --- a/libraries/networking/src/ResourceRequest.h +++ b/libraries/networking/src/ResourceRequest.h @@ -1,5 +1,6 @@ // // ResourceRequest.h +// libraries/networking/src // // Created by Ryan Huffman on 2015/07/23 // Copyright 2015 High Fidelity, Inc. From dabea21d669920b2d0d99ee3e71ddb7e9ba6027f Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 27 Aug 2015 14:30:48 -0700 Subject: [PATCH 11/11] Remove unused variable --- libraries/networking/src/ResourceCache.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index db506e5320..b07c3cc60e 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -364,7 +364,6 @@ void Resource::handleDownloadProgress(uint64_t bytesReceived, uint64_t bytesTota } void Resource::handleReplyFinished() { - QString u = _url.path(); Q_ASSERT(_request); auto result = _request->getResult(); @@ -387,8 +386,7 @@ void Resource::handleReplyFinished() { _request = nullptr; if (result == ResourceRequest::Result::TIMEOUT) { - qDebug() << "Timed out loading" << _url << - "received" << _bytesReceived << "total" << _bytesTotal; + qDebug() << "Timed out loading" << _url << "received" << _bytesReceived << "total" << _bytesTotal; } else { qDebug() << "Error loading " << _url; }