From c96632d4b6a20f4c6deacf8bba806bcf8ddfb00b Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Wed, 26 Aug 2015 16:07:47 +0200 Subject: [PATCH] Cleanup connection on node kills --- libraries/networking/src/LimitedNodeList.cpp | 4 ++++ libraries/networking/src/udt/Socket.h | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index e2bae6b5e8..b7a0cee44e 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -428,6 +428,10 @@ void LimitedNodeList::handleNodeKill(const SharedNodePointer& node) { qCDebug(networking) << "Killed" << *node; node->stopPingTimer(); emit nodeKilled(node); + + if (auto activeSocket = node->getActiveSocket()) { + _nodeSocket.cleanupConnection(*activeSocket); + } } SharedNodePointer LimitedNodeList::addOrUpdateNode(const QUuid& uuid, NodeType_t nodeType, diff --git a/libraries/networking/src/udt/Socket.h b/libraries/networking/src/udt/Socket.h index 266c0be6a5..0014a97e2b 100644 --- a/libraries/networking/src/udt/Socket.h +++ b/libraries/networking/src/udt/Socket.h @@ -73,10 +73,12 @@ public: ConnectionStats::Stats sampleStatsForConnection(const HifiSockAddr& destination); std::vector getConnectionSockAddrs(); +public slots: + void cleanupConnection(HifiSockAddr sockAddr); + private slots: void readPendingDatagrams(); void rateControlSync(); - void cleanupConnection(HifiSockAddr sockAddr); private: void setSystemBufferSizes();