From d8fab73aeb2c4401bbd88024556a7726ff2129ea Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Mon, 29 Sep 2025 14:45:31 +0200 Subject: common 53fdfd2: Fix race condition in TCPDataDispatcher get_stats --- lib/Socket.cpp | 1 + lib/Socket.h | 2 +- lib/ThreadsafeQueue.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Socket.cpp b/lib/Socket.cpp index 5c920d7..33c9c73 100644 --- a/lib/Socket.cpp +++ b/lib/Socket.cpp @@ -1152,6 +1152,7 @@ void TCPDataDispatcher::process() std::vector TCPDataDispatcher::get_stats() const { std::vector s; + auto lock = unique_lock(m_mutex); for (const auto& conn : m_connections) { s.push_back(conn.get_stats()); } diff --git a/lib/Socket.h b/lib/Socket.h index 29b618a..b9a40ee 100644 --- a/lib/Socket.h +++ b/lib/Socket.h @@ -298,7 +298,7 @@ class TCPDataDispatcher std::thread m_listener_thread; TCPSocket m_listener_socket; - std::mutex m_mutex; + mutable std::mutex m_mutex; std::deque > m_preroll_queue; std::list m_connections; }; diff --git a/lib/ThreadsafeQueue.h b/lib/ThreadsafeQueue.h index 13bc19e..a8d2e85 100644 --- a/lib/ThreadsafeQueue.h +++ b/lib/ThreadsafeQueue.h @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include -- cgit v1.2.3