diff --git a/doc/requirements.txt b/doc/requirements.txt index dc1d7efca4..b2f7d0e0c4 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -9,4 +9,8 @@ exhale Jinja2 sphinxcontrib-youtube<=1.2 sphinxcontrib-apidoc - +sphinxcontrib-applehelp<=1.0.7 # 2024-01-15: Newer packages needs Sphinx 5 or up, but our old sphinx-book-theme 0.3.3 requires Sphinx 4 +sphinxcontrib-devhelp<=1.0.5 # 2024-01-15: Newer packages need Sphinx 5 or up, but our old sphinx-book-theme 0.3.3 requires Sphinx 4 +sphinxcontrib-htmlhelp<=2.0.4 # 2024-01-15: Newer packages (probably) need Sphinx 5 or up, but our old sphinx-book-theme 0.3.3 requires Sphinx 4 +sphinxcontrib-qthelp<=1.0.6 # 2024-01-15: Newer packages (probably) need Sphinx 5 or up, but our old sphinx-book-theme 0.3.3 requires Sphinx 4 +sphinxcontrib-serializinghtml<=1.1.9 # 2024-01-15: Newer packages (probably) need Sphinx 5 or up, but our old sphinx-book-theme 0.3.3 requires Sphinx 4 \ No newline at end of file diff --git a/ecal/core/src/io/udp_receiver.cpp b/ecal/core/src/io/udp_receiver.cpp index d7e6925fb6..012f596006 100644 --- a/ecal/core/src/io/udp_receiver.cpp +++ b/ecal/core/src/io/udp_receiver.cpp @@ -73,25 +73,34 @@ namespace eCAL bool CUDPReceiver::Destroy() { if (!m_socket_impl) return(false); + + const std::lock_guard lock(m_socket_mtx); m_socket_impl.reset(); + return(true); } bool CUDPReceiver::AddMultiCastGroup(const char* ipaddr_) { if (!m_socket_impl) return(false); + + const std::lock_guard lock(m_socket_mtx); return(m_socket_impl->AddMultiCastGroup(ipaddr_)); } bool CUDPReceiver::RemMultiCastGroup(const char* ipaddr_) { if (!m_socket_impl) return(false); + + const std::lock_guard lock(m_socket_mtx); return(m_socket_impl->RemMultiCastGroup(ipaddr_)); } size_t CUDPReceiver::Receive(char* buf_, size_t len_, int timeout_, ::sockaddr_in* address_ /* = nullptr */) { if (!m_socket_impl) return(0); + + const std::lock_guard lock(m_socket_mtx); return(m_socket_impl->Receive(buf_, len_, timeout_, address_)); } } diff --git a/ecal/core/src/io/udp_receiver.h b/ecal/core/src/io/udp_receiver.h index 500aaeec6c..6a976bde6f 100644 --- a/ecal/core/src/io/udp_receiver.h +++ b/ecal/core/src/io/udp_receiver.h @@ -24,6 +24,7 @@ #pragma once #include +#include #include "ecal_receiver.h" namespace eCAL @@ -44,7 +45,8 @@ namespace eCAL size_t Receive(char* buf_, size_t len_, int timeout_, ::sockaddr_in* address_ = nullptr) override; protected: - bool m_use_npcap; + bool m_use_npcap; + std::mutex m_socket_mtx; std::shared_ptr m_socket_impl; }; }