From 1bbbac7f62d71f0d0c4c71d429aeb2cfdf96e5ac Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Fri, 13 Jan 2017 16:33:33 +0100 Subject: EDI: add protection against runaway memory usage --- lib/UdpSocket.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'lib/UdpSocket.cpp') diff --git a/lib/UdpSocket.cpp b/lib/UdpSocket.cpp index b88c731..570da5f 100644 --- a/lib/UdpSocket.cpp +++ b/lib/UdpSocket.cpp @@ -261,8 +261,9 @@ UdpReceiver::~UdpReceiver() { } } -void UdpReceiver::start(int port) { +void UdpReceiver::start(int port, size_t max_packets_queued) { m_port = port; + m_max_packets_queued = max_packets_queued; m_thread = std::thread(&UdpReceiver::m_run, this); } @@ -299,7 +300,9 @@ void UdpReceiver::m_run() // TODO replace fprintf fprintf(stderr, "Warning, possible UDP truncation\n"); } - m_packets.push(packet); + + // If this blocks, the UDP socket will lose incoming packets + m_packets.push_wait_if_full(packet, m_max_packets_queued); } else { -- cgit v1.2.3