From 6fd3c68de3b77d77bc71d3bb3cd1c241f7f1fd1c Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Tue, 4 Mar 2025 09:21:42 -0500 Subject: [PATCH] allow call end to cleanup a stream ID associated to a given call stream; --- src/fne/network/FNENetwork.cpp | 13 +++++++++++++ src/fne/network/FNENetwork.h | 7 +++++++ src/fne/network/callhandler/TagDMRData.cpp | 1 + src/fne/network/callhandler/TagNXDNData.cpp | 1 + src/fne/network/callhandler/TagP25Data.cpp | 1 + 5 files changed, 23 insertions(+) diff --git a/src/fne/network/FNENetwork.cpp b/src/fne/network/FNENetwork.cpp index cbe35d0f..dc980bc9 100644 --- a/src/fne/network/FNENetwork.cpp +++ b/src/fne/network/FNENetwork.cpp @@ -1392,6 +1392,19 @@ bool FNENetwork::checkU2UDroppedPeer(uint32_t peerId) return false; } +/* Erases a stream ID from the given peer ID connection. */ + +void FNENetwork::eraseStreamPktSeq(uint32_t peerId, uint32_t streamId) +{ + if (peerId > 0 && (m_peers.find(peerId) != m_peers.end())) { + FNEPeerConnection* connection = m_peers[peerId]; + if (connection != nullptr) { + std::lock_guard lock(m_peerMutex); + connection->eraseStreamPktSeq(streamId); + } + } +} + /* Helper to create a peer on the peers affiliations list. */ void FNENetwork::createPeerAffiliations(uint32_t peerId, std::string peerName) diff --git a/src/fne/network/FNENetwork.h b/src/fne/network/FNENetwork.h index bd8f8630..2ea46091 100644 --- a/src/fne/network/FNENetwork.h +++ b/src/fne/network/FNENetwork.h @@ -597,6 +597,13 @@ namespace network */ bool checkU2UDroppedPeer(uint32_t peerId); + /** + * @brief Erases a stream ID from the given peer ID connection. + * @param peerId Peer ID. + * @param streamId Stream ID. + */ + void eraseStreamPktSeq(uint32_t peerId, uint32_t streamId); + /** * @brief Helper to create a peer on the peers affiliations list. * @param peerId Peer ID. diff --git a/src/fne/network/callhandler/TagDMRData.cpp b/src/fne/network/callhandler/TagDMRData.cpp index 2fff63f5..d9f4197b 100644 --- a/src/fne/network/callhandler/TagDMRData.cpp +++ b/src/fne/network/callhandler/TagDMRData.cpp @@ -197,6 +197,7 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId .request(m_network->m_influxServer); } + m_network->eraseStreamPktSeq(peerId, streamId); m_network->m_callInProgress = false; } } diff --git a/src/fne/network/callhandler/TagNXDNData.cpp b/src/fne/network/callhandler/TagNXDNData.cpp index 368112a3..422d7fd9 100644 --- a/src/fne/network/callhandler/TagNXDNData.cpp +++ b/src/fne/network/callhandler/TagNXDNData.cpp @@ -150,6 +150,7 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI .request(m_network->m_influxServer); } + m_network->eraseStreamPktSeq(peerId, streamId); m_network->m_callInProgress = false; } } diff --git a/src/fne/network/callhandler/TagP25Data.cpp b/src/fne/network/callhandler/TagP25Data.cpp index eaf9f61c..d0b08722 100644 --- a/src/fne/network/callhandler/TagP25Data.cpp +++ b/src/fne/network/callhandler/TagP25Data.cpp @@ -223,6 +223,7 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId .request(m_network->m_influxServer); } + m_network->eraseStreamPktSeq(peerId, streamId); m_network->m_callInProgress = false; } }