Fix data race

This commit is contained in:
badaix 2021-09-13 14:44:06 +02:00
parent 8067394212
commit e6872593ee
3 changed files with 11 additions and 5 deletions

View file

@ -84,6 +84,7 @@ void StreamServer::onChunkEncoded(const PcmStream* pcmStream, bool isDefaultStre
{
if (!settings_.stream.sendAudioToMutedClients)
{
std::lock_guard<std::recursive_mutex> lock(clientMutex_);
GroupPtr group = Config::instance().getGroupFromClient(session->clientId);
if (group)
{
@ -93,7 +94,6 @@ void StreamServer::onChunkEncoded(const PcmStream* pcmStream, bool isDefaultStre
}
else
{
std::lock_guard<std::recursive_mutex> lock(clientMutex_);
ClientInfoPtr client = group->getClient(session->clientId);
if (client && client->config.volume.muted)
continue;

View file

@ -38,12 +38,14 @@ StreamSession::StreamSession(net::any_io_executor executor, StreamMessageReceive
void StreamSession::setPcmStream(PcmStreamPtr pcmStream)
{
std::lock_guard<std::mutex> lock(mutex_);
pcmStream_ = pcmStream;
}
const PcmStreamPtr StreamSession::pcmStream() const
{
std::lock_guard<std::mutex> lock(mutex_);
return pcmStream_;
}

View file

@ -19,19 +19,22 @@
#ifndef STREAM_SESSION_HPP
#define STREAM_SESSION_HPP
#include "common/queue.h"
#include "message/message.hpp"
#include "streamreader/stream_manager.hpp"
#include <atomic>
#include <boost/asio.hpp>
#include <condition_variable>
#include <deque>
#include <memory>
#include <mutex>
#include <set>
#include <sstream>
#include <string>
#include <vector>
#include <boost/asio.hpp>
#include "common/queue.h"
#include "message/message.hpp"
#include "streamreader/stream_manager.hpp"
using boost::asio::ip::tcp;
namespace net = boost::asio;
@ -159,6 +162,7 @@ protected:
streamreader::PcmStreamPtr pcmStream_;
net::strand<net::any_io_executor> strand_;
std::deque<shared_const_buffer> messages_;
mutable std::mutex mutex_;
};