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; + } } }