diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-03-11 18:09:22 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2019-03-11 18:09:22 +0000 |
| commit | b042118121a27027b94d380ea4788e03ed1a9944 (patch) | |
| tree | 0648ebcf78045fe8ddc8e33e4b84df4e73d5eb29 /src/lib/encode_server.cc | |
| parent | 19d8aa3e21b74e576894a807d518b4cc23c1921f (diff) | |
Protect _broadcast.socket from simultaneous access.
Diffstat (limited to 'src/lib/encode_server.cc')
| -rw-r--r-- | src/lib/encode_server.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lib/encode_server.cc b/src/lib/encode_server.cc index 9902c8e84..d31760c0d 100644 --- a/src/lib/encode_server.cc +++ b/src/lib/encode_server.cc @@ -97,9 +97,15 @@ EncodeServer::~EncodeServer () delete i; } - if (_broadcast.socket) { - _broadcast.socket->close (); + { + boost::mutex::scoped_lock lm (_broadcast.mutex); + if (_broadcast.socket) { + _broadcast.socket->close (); + delete _broadcast.socket; + _broadcast.socket = 0; + } } + _broadcast.io_service.stop (); if (_broadcast.thread) { /* Ideally this would be a DCPOMATIC_ASSERT(_broadcast.thread->joinable()) but we @@ -306,6 +312,7 @@ EncodeServer::broadcast_received () } } + boost::mutex::scoped_lock lm (_broadcast.mutex); _broadcast.socket->async_receive_from ( boost::asio::buffer (_broadcast.buffer, sizeof (_broadcast.buffer)), _broadcast.send_endpoint, boost::bind (&EncodeServer::broadcast_received, this) |
