diff options
| author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2025-09-29 14:49:26 +0200 | 
|---|---|---|
| committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2025-09-29 14:49:26 +0200 | 
| commit | aad3011d262d36ff123f5811f4404ae85900e57c (patch) | |
| tree | 4dfd647027d89ea1435fa640516168d93e31a0a4 | |
| parent | 384987013f07db19c19c7ca22f40c457811b54b4 (diff) | |
| download | ODR-SourceCompanion-aad3011d262d36ff123f5811f4404ae85900e57c.tar.gz ODR-SourceCompanion-aad3011d262d36ff123f5811f4404ae85900e57c.tar.bz2 ODR-SourceCompanion-aad3011d262d36ff123f5811f4404ae85900e57c.zip | |
common 53fdfd2: Fix race condition in TCPDataDispatcher get_statsnext
| -rw-r--r-- | lib/Socket.cpp | 1 | ||||
| -rw-r--r-- | lib/Socket.h | 2 | ||||
| -rw-r--r-- | 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<TCPConnection::stats_t> TCPDataDispatcher::get_stats() const  {      std::vector<TCPConnection::stats_t> s; +    auto lock = unique_lock<mutex>(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<std::vector<uint8_t> > m_preroll_queue;          std::list<TCPConnection> 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 <functional>  #include <mutex>  #include <condition_variable> -#include <queue> +#include <deque>  #include <utility>  #include <cassert> | 
