From 5b8b6f70af10c858ab1bc82e87e9bf5bfd978d39 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Sat, 25 Mar 2023 23:54:56 -0400 Subject: [PATCH] fix condition where permitted TG would not be reset after a TG hangtime timeout; --- src/dmr/Slot.cpp | 5 +++++ src/nxdn/Control.cpp | 5 +++++ src/p25/Control.cpp | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/src/dmr/Slot.cpp b/src/dmr/Slot.cpp index 3475ca4b..d0bd20f2 100644 --- a/src/dmr/Slot.cpp +++ b/src/dmr/Slot.cpp @@ -498,6 +498,11 @@ void Slot::clock() LogMessage(LOG_RF, "Slot %u, talkgroup hang has expired, lastDstId = %u", m_slotNo, m_rfLastDstId); } m_rfLastDstId = 0U; + + // reset permitted ID and clear permission state + if (!m_authoritative && m_permittedDstId != 0U) { + m_permittedDstId = 0U; + } } } diff --git a/src/nxdn/Control.cpp b/src/nxdn/Control.cpp index e8294a26..2174652e 100644 --- a/src/nxdn/Control.cpp +++ b/src/nxdn/Control.cpp @@ -550,6 +550,11 @@ void Control::clock(uint32_t ms) LogMessage(LOG_RF, "talkgroup hang has expired, lastDstId = %u", m_rfLastDstId); } m_rfLastDstId = 0U; + + // reset permitted ID and clear permission state + if (!m_authoritative && m_permittedDstId != 0U) { + m_permittedDstId = 0U; + } } } diff --git a/src/p25/Control.cpp b/src/p25/Control.cpp index 1c73436d..9328801e 100644 --- a/src/p25/Control.cpp +++ b/src/p25/Control.cpp @@ -701,6 +701,11 @@ void Control::clock(uint32_t ms) LogMessage(LOG_RF, "talkgroup hang has expired, lastDstId = %u", m_rfLastDstId); } m_rfLastDstId = 0U; + + // reset permitted ID and clear permission state + if (!m_authoritative && m_permittedDstId != 0U) { + m_permittedDstId = 0U; + } } }