From f6d319f917a4e20cc269b2d002bb6a23b974add4 Mon Sep 17 00:00:00 2001 From: RomanReznichenkoLuxoft <85177915+RomanReznichenkoLuxoft@users.noreply.github.com> Date: Thu, 3 Feb 2022 19:35:40 +0200 Subject: lock read and write operations (#3851) Co-authored-by: Yana Chernysheva --- .../include/transport_manager/websocket_server/websocket_session.h | 2 ++ .../transport_manager/src/websocket_server/websocket_session.cc | 2 ++ 2 files changed, 4 insertions(+) (limited to 'src') diff --git a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h index 009d2fe07c..afdacfc4ec 100644 --- a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h +++ b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h @@ -38,6 +38,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "protocol/raw_message.h" #include "transport_manager/transport_adapter/transport_adapter.h" +#include "utils/lock.h" #include "utils/logger.h" #ifdef ENABLE_SECURITY @@ -103,6 +104,7 @@ class WebSocketSession DataSendDoneCallback data_send_done_; DataSendFailedCallback data_send_failed_; OnIOErrorCallback on_io_error_; + mutable sync_primitives::Lock read_write_operations_lock_; }; } // namespace transport_adapter diff --git a/src/components/transport_manager/src/websocket_server/websocket_session.cc b/src/components/transport_manager/src/websocket_server/websocket_session.cc index 020da580f9..c95cdd2c46 100644 --- a/src/components/transport_manager/src/websocket_server/websocket_session.cc +++ b/src/components/transport_manager/src/websocket_server/websocket_session.cc @@ -89,6 +89,7 @@ void WebSocketSession::AsyncAccept() { template void WebSocketSession::AsyncRead(boost::system::error_code ec) { SDL_LOG_AUTO_TRACE(); + sync_primitives::AutoLock lock(read_write_operations_lock_); if (ec) { auto str_err = "ErrorMessage: " + ec.message(); SDL_LOG_ERROR(str_err); @@ -106,6 +107,7 @@ void WebSocketSession::AsyncRead(boost::system::error_code ec) { template void WebSocketSession::WriteDown(Message message) { + sync_primitives::AutoLock lock(read_write_operations_lock_); boost::system::error_code ec; ws_.write(boost::asio::buffer(message->data(), message->data_size()), ec); -- cgit v1.2.1