diff --git a/libraries/networking/src/AssetClient.cpp b/libraries/networking/src/AssetClient.cpp index 0d640b4e80..8fb0001b57 100644 --- a/libraries/networking/src/AssetClient.cpp +++ b/libraries/networking/src/AssetClient.cpp @@ -32,7 +32,6 @@ MessageID AssetClient::_currentID = 0; AssetClient::AssetClient() { - setCustomDeleter([](Dependency* dependency){ static_cast(dependency)->deleteLater(); }); @@ -502,7 +501,18 @@ bool AssetClient::cancelGetAssetInfoRequest(MessageID id) { bool AssetClient::cancelGetAssetRequest(MessageID id) { // Search through each pending mapping request for id `id` for (auto& kv : _pendingRequests) { - if (kv.second.erase(id)) { + auto& messageCallbackMap = kv.second; + auto requestIt = messageCallbackMap.find(id); + if (requestIt != kv.second.end()) { + + auto& message = requestIt->second.message; + if (message) { + // disconnect from all signals emitting from the pending message + disconnect(message.data(), nullptr, this, nullptr); + } + + messageCallbackMap.erase(requestIt); + return true; } }