From ee158b521d3b2d4dacaeb18ce335da1c27b70800 Mon Sep 17 00:00:00 2001 From: badaix Date: Tue, 21 Sep 2021 08:16:33 +0200 Subject: [PATCH] Fix thread races --- server/server.cpp | 2 ++ server/stream_session.cpp | 4 ++-- server/streamreader/pcm_stream.cpp | 10 +--------- server/streamreader/pcm_stream.hpp | 2 -- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/server/server.cpp b/server/server.cpp index a69f036f..89fa97cc 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -629,6 +629,7 @@ void Server::processRequest(const jsonrpcpp::request_ptr request, const OnRespon void Server::onMessageReceived(std::shared_ptr controlSession, const std::string& message, const ResponseHander& response_handler) { // LOG(DEBUG, LOG_TAG) << "onMessageReceived: " << message << "\n"; + // std::lock_guard lock(clientMutex_); jsonrpcpp::entity_ptr entity(nullptr); try { @@ -703,6 +704,7 @@ void Server::onMessageReceived(std::shared_ptr controlSession, c void Server::onMessageReceived(StreamSession* streamSession, const msg::BaseMessage& baseMessage, char* buffer) { + // std::lock_guard lock(clientMutex_); LOG(DEBUG, LOG_TAG) << "onMessageReceived: " << baseMessage.type << ", size: " << baseMessage.size << ", id: " << baseMessage.id << ", refers: " << baseMessage.refersTo << ", sent: " << baseMessage.sent.sec << "," << baseMessage.sent.usec << ", recv: " << baseMessage.received.sec << "," << baseMessage.received.usec << "\n"; diff --git a/server/stream_session.cpp b/server/stream_session.cpp index 66d98e5e..adcfebde 100644 --- a/server/stream_session.cpp +++ b/server/stream_session.cpp @@ -38,14 +38,14 @@ StreamSession::StreamSession(const net::any_io_executor& executor, StreamMessage void StreamSession::setPcmStream(PcmStreamPtr pcmStream) { - // std::lock_guard lock(mutex_); + std::lock_guard lock(mutex_); pcmStream_ = pcmStream; } const PcmStreamPtr StreamSession::pcmStream() const { - // std::lock_guard lock(mutex_); + std::lock_guard lock(mutex_); return pcmStream_; } diff --git a/server/streamreader/pcm_stream.cpp b/server/streamreader/pcm_stream.cpp index 59507a53..fa671acf 100644 --- a/server/streamreader/pcm_stream.cpp +++ b/server/streamreader/pcm_stream.cpp @@ -295,7 +295,6 @@ json PcmStream::toJson() const {"status", to_string(state_)}, }; - j["metadata"] = metadata_.toJson(); j["properties"] = properties_.toJson(); return j; @@ -308,13 +307,6 @@ void PcmStream::addListener(PcmListener* pcmListener) } -const Metatags& PcmStream::getMetadata() const -{ - std::lock_guard lock(mutex_); - return metadata_; -} - - const Properties& PcmStream::getProperties() const { // std::lock_guard lock(mutex_); @@ -448,7 +440,7 @@ void PcmStream::play(ResultHandler handler) void PcmStream::setProperties(const Properties& properties) { - // std::lock_guard lock(mutex_); + std::lock_guard lock(mutex_); Properties props = properties; // Missing metadata means the data didn't change, so // enrich the new properites with old metadata diff --git a/server/streamreader/pcm_stream.hpp b/server/streamreader/pcm_stream.hpp index da0be45d..aca9469f 100644 --- a/server/streamreader/pcm_stream.hpp +++ b/server/streamreader/pcm_stream.hpp @@ -134,7 +134,6 @@ public: virtual const SampleFormat& getSampleFormat() const; virtual std::string getCodec() const; - const Metatags& getMetadata() const; const Properties& getProperties() const; // Setter for properties @@ -189,7 +188,6 @@ protected: std::unique_ptr encoder_; std::string name_; std::atomic state_; - Metatags metadata_; Properties properties_; boost::asio::io_context& ioc_; ServerSettings server_settings_;