correct issue where the stream ID *may not* be reset at the end of call by explicitly calling the appropriate network reset routine; correct Win32 compilation issues for FNE;

pull/75/head
Bryan Biedenkapp 1 year ago
parent f3c6e79999
commit e14defe125

@ -1041,8 +1041,7 @@ void HostBridge::processUDPAudio()
m_txStreamId = 1U; // prevent further false starts -- this isn't the right way to handle this... m_txStreamId = 1U; // prevent further false starts -- this isn't the right way to handle this...
LogMessage(LOG_HOST, "%s, call start, srcId = %u, dstId = %u", UDP_CALL, m_udpSrcId, m_udpDstId); LogMessage(LOG_HOST, "%s, call start, srcId = %u, dstId = %u", UDP_CALL, m_udpSrcId, m_udpDstId);
if (m_grantDemand) { if (m_grantDemand) {
switch (m_txMode) switch (m_txMode) {
{
case TX_MODE_P25: case TX_MODE_P25:
{ {
p25::lc::LC lc = p25::lc::LC(); p25::lc::LC lc = p25::lc::LC();
@ -2101,6 +2100,7 @@ void HostBridge::callEnd(uint32_t srcId, uint32_t dstId)
data.setSrcId(srcId); data.setSrcId(srcId);
m_network->writeDMRTerminator(data, &m_dmrSeqNo, &m_dmrN, m_dmrEmbeddedData); m_network->writeDMRTerminator(data, &m_dmrSeqNo, &m_dmrN, m_dmrEmbeddedData);
m_network->resetDMR(data.getSlotNo());
} }
break; break;
case TX_MODE_P25: case TX_MODE_P25:
@ -2114,6 +2114,7 @@ void HostBridge::callEnd(uint32_t srcId, uint32_t dstId)
uint8_t controlByte = 0x00U; uint8_t controlByte = 0x00U;
m_network->writeP25TDU(lc, lsd, controlByte); m_network->writeP25TDU(lc, lsd, controlByte);
m_network->resetP25();
} }
break; break;
} }

@ -191,12 +191,19 @@ namespace network
// set SO_REUSEADDR option // set SO_REUSEADDR option
const int sockOptVal = 1; const int sockOptVal = 1;
#if defined(_WIN32)
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&sockOptVal, sizeof(int)) < 0) {
LogError(LOG_NET, "Failed to connect to InfluxDB server, err: %d", errno);
closesocket(fd);
return 1;
}
#else
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &sockOptVal, sizeof(int)) < 0) { if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &sockOptVal, sizeof(int)) < 0) {
LogError(LOG_NET, "Failed to connect to InfluxDB server, err: %d", errno); LogError(LOG_NET, "Failed to connect to InfluxDB server, err: %d", errno);
closesocket(fd); closesocket(fd);
return 1; return 1;
} }
#endif
// connect to the server // connect to the server
ret = connect(fd, addr->ai_addr, addr->ai_addrlen); ret = connect(fd, addr->ai_addr, addr->ai_addrlen);
if (ret < 0) { if (ret < 0) {
@ -297,9 +304,11 @@ namespace network
struct linger sl; struct linger sl;
sl.l_onoff = 1; /* non-zero value enables linger option in kernel */ sl.l_onoff = 1; /* non-zero value enables linger option in kernel */
sl.l_linger = 0; /* timeout interval in seconds */ sl.l_linger = 0; /* timeout interval in seconds */
#if defined(_WIN32)
setsockopt(fd, SOL_SOCKET, SO_LINGER, (char*)&sl, sizeof(sl));
#else
setsockopt(fd, SOL_SOCKET, SO_LINGER, &sl, sizeof(sl)); setsockopt(fd, SOL_SOCKET, SO_LINGER, &sl, sizeof(sl));
#endif
// close socket // close socket
closesocket(fd); closesocket(fd);
return ret / 100 == 2 ? 0 : ret; return ret / 100 == 2 ? 0 : ret;

Loading…
Cancel
Save

Powered by TurnKey Linux.