silence frame queue read errors after 5 consecutive errors (this is to prevent log spam);

4.11f_maint
Bryan Biedenkapp 11 months ago
parent 086730320d
commit c68b99dc61

@ -57,7 +57,13 @@ UInt8Array FrameQueue::read(int& messageLength, sockaddr_storage& address, uint3
::memset(buffer, 0x00U, DATA_PACKET_LENGTH); ::memset(buffer, 0x00U, DATA_PACKET_LENGTH);
int length = m_socket->read(buffer, DATA_PACKET_LENGTH, address, addrLen); int length = m_socket->read(buffer, DATA_PACKET_LENGTH, address, addrLen);
if (length < 0) { if (length < 0) {
LogError(LOG_NET, "Failed reading data from the network"); if (m_failedReadCnt <= MAX_FAILED_READ_CNT_LOGGING)
LogError(LOG_NET, "Failed reading data from the network, failedCnt = %u", m_failedReadCnt);
else {
if (m_failedReadCnt == MAX_FAILED_READ_CNT_LOGGING + 1U)
LogError(LOG_NET, "Failed reading data from the network -- exceeded 5 read errors, probable connection issue, silencing further errors");
}
m_failedReadCnt++;
return nullptr; return nullptr;
} }
@ -65,6 +71,8 @@ UInt8Array FrameQueue::read(int& messageLength, sockaddr_storage& address, uint3
if (m_debug) if (m_debug)
Utils::dump(1U, "Network Packet", buffer, length); Utils::dump(1U, "Network Packet", buffer, length);
m_failedReadCnt = 0U;
if (length < RTP_HEADER_LENGTH_BYTES + RTP_EXTENSION_HEADER_LENGTH_BYTES) { if (length < RTP_HEADER_LENGTH_BYTES + RTP_EXTENSION_HEADER_LENGTH_BYTES) {
LogError(LOG_NET, "FrameQueue::read(), message received from network is malformed! %u bytes != %u bytes", LogError(LOG_NET, "FrameQueue::read(), message received from network is malformed! %u bytes != %u bytes",
RTP_HEADER_LENGTH_BYTES + RTP_EXTENSION_HEADER_LENGTH_BYTES, length); RTP_HEADER_LENGTH_BYTES + RTP_EXTENSION_HEADER_LENGTH_BYTES, length);

@ -33,6 +33,7 @@ std::mutex RawFrameQueue::m_flushMutex;
RawFrameQueue::RawFrameQueue(udp::Socket* socket, bool debug) : RawFrameQueue::RawFrameQueue(udp::Socket* socket, bool debug) :
m_socket(socket), m_socket(socket),
m_buffers(), m_buffers(),
m_failedReadCnt(0U),
m_debug(debug) m_debug(debug)
{ {
/* stub */ /* stub */
@ -56,7 +57,13 @@ UInt8Array RawFrameQueue::read(int& messageLength, sockaddr_storage& address, ui
::memset(buffer, 0x00U, DATA_PACKET_LENGTH); ::memset(buffer, 0x00U, DATA_PACKET_LENGTH);
int length = m_socket->read(buffer, DATA_PACKET_LENGTH, address, addrLen); int length = m_socket->read(buffer, DATA_PACKET_LENGTH, address, addrLen);
if (length < 0) { if (length < 0) {
LogError(LOG_NET, "Failed reading data from the network"); if (m_failedReadCnt <= MAX_FAILED_READ_CNT_LOGGING)
LogError(LOG_NET, "Failed reading data from the network, failedCnt = %u", m_failedReadCnt);
else {
if (m_failedReadCnt == MAX_FAILED_READ_CNT_LOGGING + 1U)
LogError(LOG_NET, "Failed reading data from the network -- exceeded 5 read errors, probable connection issue, silencing further errors");
}
m_failedReadCnt++;
return nullptr; return nullptr;
} }
@ -64,6 +71,8 @@ UInt8Array RawFrameQueue::read(int& messageLength, sockaddr_storage& address, ui
if (m_debug) if (m_debug)
Utils::dump(1U, "Network Packet", buffer, length); Utils::dump(1U, "Network Packet", buffer, length);
m_failedReadCnt = 0U;
// copy message // copy message
messageLength = length; messageLength = length;
UInt8Array message = std::unique_ptr<uint8_t[]>(new uint8_t[length]); UInt8Array message = std::unique_ptr<uint8_t[]>(new uint8_t[length]);

@ -29,6 +29,7 @@ namespace network
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
const uint32_t DATA_PACKET_LENGTH = 8192U; const uint32_t DATA_PACKET_LENGTH = 8192U;
const uint8_t MAX_FAILED_READ_CNT_LOGGING = 5U;
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// Class Declaration // Class Declaration
@ -96,6 +97,8 @@ namespace network
static std::mutex m_flushMutex; static std::mutex m_flushMutex;
udp::BufferVector m_buffers; udp::BufferVector m_buffers;
uint32_t m_failedReadCnt;
bool m_debug; bool m_debug;
private: private:

@ -669,7 +669,7 @@ bool Network::open()
LogMessage(LOG_NET, "PEER %u opening network", m_peerId); LogMessage(LOG_NET, "PEER %u opening network", m_peerId);
if (udp::Socket::lookup(m_address, m_port, m_addr, m_addrLen) != 0) { if (udp::Socket::lookup(m_address, m_port, m_addr, m_addrLen) != 0) {
LogMessage(LOG_NET, "Could not lookup the address of the master"); LogMessage(LOG_NET, "!!! Could not lookup the address of the master!");
return false; return false;
} }

Loading…
Cancel
Save

Powered by TurnKey Linux.