From 268783e89d96ba1d69f53bbe5fdec51783c4f294 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Tue, 9 Feb 2021 15:57:17 +0000 Subject: [PATCH] fix issue with incorrect handling of U_DREG; --- p25/TrunkPacket.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/p25/TrunkPacket.cpp b/p25/TrunkPacket.cpp index af704526..e4f67342 100644 --- a/p25/TrunkPacket.cpp +++ b/p25/TrunkPacket.cpp @@ -2245,6 +2245,7 @@ void TrunkPacket::writeRF_TSDU_U_Reg_Rsp(uint32_t srcId) /// void TrunkPacket::writeRF_TSDU_U_Dereg_Ack(uint32_t srcId) { + bool dereged = false; m_rfTSBK.setLCO(TSBK_OSP_U_DEREG_ACK); if (m_verbose) { @@ -2252,27 +2253,34 @@ void TrunkPacket::writeRF_TSDU_U_Dereg_Ack(uint32_t srcId) srcId, m_rfTSBK.getSysId(), m_rfTSBK.getNetId()); } - ::ActivityLog("P25", true, "unit deregistration request from %u", srcId); - // remove dynamic unit registration table entry if (std::find(m_unitRegTable.begin(), m_unitRegTable.end(), srcId) != m_unitRegTable.end()) { auto it = std::find(m_unitRegTable.begin(), m_unitRegTable.end(), srcId); m_unitRegTable.erase(it); + dereged = true; } // remove dynamic affiliation table entry try { m_grpAffTable.at(srcId); m_grpAffTable.erase(srcId); + dereged = true; } catch (...) { // stub } - m_rfTSBK.setSrcId(P25_WUID_SYS); - m_rfTSBK.setDstId(srcId); + if (dereged) { + ::ActivityLog("P25", true, "unit deregistration request from %u", srcId); - writeRF_TSDU_SBF(false); + m_rfTSBK.setSrcId(P25_WUID_SYS); + m_rfTSBK.setDstId(srcId); + + writeRF_TSDU_SBF(false); + } + else { + ::ActivityLog("P25", true, "unit deregistration request from %u denied", srcId); + } } ///