fix issue with incorrect handling of U_DREG;

pull/1/head
Bryan Biedenkapp 5 years ago
parent 3375748224
commit 268783e89d

@ -2245,6 +2245,7 @@ void TrunkPacket::writeRF_TSDU_U_Reg_Rsp(uint32_t srcId)
/// <param name="srcId"></param> /// <param name="srcId"></param>
void TrunkPacket::writeRF_TSDU_U_Dereg_Ack(uint32_t srcId) void TrunkPacket::writeRF_TSDU_U_Dereg_Ack(uint32_t srcId)
{ {
bool dereged = false;
m_rfTSBK.setLCO(TSBK_OSP_U_DEREG_ACK); m_rfTSBK.setLCO(TSBK_OSP_U_DEREG_ACK);
if (m_verbose) { if (m_verbose) {
@ -2252,27 +2253,34 @@ void TrunkPacket::writeRF_TSDU_U_Dereg_Ack(uint32_t srcId)
srcId, m_rfTSBK.getSysId(), m_rfTSBK.getNetId()); srcId, m_rfTSBK.getSysId(), m_rfTSBK.getNetId());
} }
::ActivityLog("P25", true, "unit deregistration request from %u", srcId);
// remove dynamic unit registration table entry // remove dynamic unit registration table entry
if (std::find(m_unitRegTable.begin(), m_unitRegTable.end(), srcId) != m_unitRegTable.end()) { if (std::find(m_unitRegTable.begin(), m_unitRegTable.end(), srcId) != m_unitRegTable.end()) {
auto it = std::find(m_unitRegTable.begin(), m_unitRegTable.end(), srcId); auto it = std::find(m_unitRegTable.begin(), m_unitRegTable.end(), srcId);
m_unitRegTable.erase(it); m_unitRegTable.erase(it);
dereged = true;
} }
// remove dynamic affiliation table entry // remove dynamic affiliation table entry
try { try {
m_grpAffTable.at(srcId); m_grpAffTable.at(srcId);
m_grpAffTable.erase(srcId); m_grpAffTable.erase(srcId);
dereged = true;
} }
catch (...) { catch (...) {
// stub // stub
} }
m_rfTSBK.setSrcId(P25_WUID_SYS); if (dereged) {
m_rfTSBK.setDstId(srcId); ::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);
}
} }
/// <summary> /// <summary>

Loading…
Cancel
Save

Powered by TurnKey Linux.