diff --git a/libraries/networking/src/PacketReceiver.cpp b/libraries/networking/src/PacketReceiver.cpp index cb35b9b5c9..e62fcd072a 100644 --- a/libraries/networking/src/PacketReceiver.cpp +++ b/libraries/networking/src/PacketReceiver.cpp @@ -230,7 +230,7 @@ void PacketReceiver::handleVerifiedPacket(std::unique_ptr packet) { auto listener = it.value(); - if (listener.first && it->second.isValid()) { + if (listener.first) { bool success = false; @@ -273,12 +273,21 @@ void PacketReceiver::handleVerifiedPacket(std::unique_ptr packet) { Q_ARG(QSharedPointer, QSharedPointer(nlPacket.release()))); } + } else { + listenerIsDead = true; } } else { emit dataReceived(NodeType::Unassigned, nlPacket->getDataSize()); - success = listener.second.invoke(listener.first, - Q_ARG(QSharedPointer, QSharedPointer(nlPacket.release()))); + // one final check on the QPointer before we invoke + if (listener.first) { + success = listener.second.invoke(listener.first, + Q_ARG(QSharedPointer, + QSharedPointer(nlPacket.release()))); + } else { + listenerIsDead = true; + } + } if (!success) {