summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRomanReznichenkoLuxoft <85177915+RomanReznichenkoLuxoft@users.noreply.github.com>2022-02-03 19:35:40 +0200
committerGitHub <noreply@github.com>2022-02-03 12:35:40 -0500
commitf6d319f917a4e20cc269b2d002bb6a23b974add4 (patch)
tree9e2a23f0332be262d389b2c77b5abd055c1182d6
parent0dac769e35f40bfc0de0d4676ecba0bcd74afca3 (diff)
downloadsdl_core-f6d319f917a4e20cc269b2d002bb6a23b974add4.tar.gz
lock read and write operations (#3851)
Co-authored-by: Yana Chernysheva <ychernysheva@luxoft.com>
-rw-r--r--src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h2
-rw-r--r--src/components/transport_manager/src/websocket_server/websocket_session.cc2
2 files changed, 4 insertions, 0 deletions
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<ExecutorType>::AsyncAccept() {
template <typename ExecutorType>
void WebSocketSession<ExecutorType>::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<ExecutorType>::AsyncRead(boost::system::error_code ec) {
template <typename ExecutorType>
void WebSocketSession<ExecutorType>::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);