diff --git a/host/Host.cpp b/host/Host.cpp index 8be7fa4e..744a57ee 100644 --- a/host/Host.cpp +++ b/host/Host.cpp @@ -1694,6 +1694,13 @@ bool Host::createNetwork() bool updateLookup = networkConf["updateLookups"].as(false); bool debug = networkConf["debug"].as(false); + if (rconPassword.length() > 64) { + std::string password = rconPassword; + rconPassword = password.substr(0, 64); + + ::LogWarning(LOG_HOST, "RCON password is too long; truncating to the first 64 characters."); + } + IdenTable entry = m_idenTable->find(m_channelId); LogInfo("Network Parameters"); diff --git a/p25/Control.cpp b/p25/Control.cpp index b3b4db09..2732ced4 100644 --- a/p25/Control.cpp +++ b/p25/Control.cpp @@ -784,7 +784,11 @@ void Control::processNetwork() case P25_DUID_LDU2: if (!m_dedicatedControl) ret = m_voice->processNetwork(data, length, control, lsd, duid); - // dedicated control ignores network voice frames -- always + else { + if (m_voiceOnControl && !m_trunk->isChBusy(m_siteData.channelNo())) { + ret = m_voice->processNetwork(data, length, control, lsd, duid); + } + } break; case P25_DUID_TDU: @@ -795,7 +799,11 @@ void Control::processNetwork() case P25_DUID_PDU: if (!m_dedicatedControl) ret = m_data->processNetwork(data, length, control, lsd, duid); - // dedicated control ignores network data frames -- always + else { + if (m_voiceOnControl && !m_trunk->isChBusy(m_siteData.channelNo())) { + ret = m_voice->processNetwork(data, length, control, lsd, duid); + } + } break; case P25_DUID_TSDU: