diff --git a/src/jamidht/connectionmanager.cpp b/src/jamidht/connectionmanager.cpp index c82fa823ead4754970bb4726460ed2ad6ab9da25..3c1a4389887f75c006bc5731541e0f6b47a00c5c 100644 --- a/src/jamidht/connectionmanager.cpp +++ b/src/jamidht/connectionmanager.cpp @@ -43,10 +43,10 @@ namespace jami { struct ConnectionInfo { + std::mutex mutex_ {}; std::condition_variable responseCv_ {}; - std::atomic_bool responseReceived_ {false}; + bool responseReceived_ {false}; PeerConnectionRequest response_ {}; - std::mutex mutex_ {}; std::unique_ptr<IceTransport> ice_ {nullptr}; // Used to store currently non ready TLS Socket std::unique_ptr<TlsSocketEndpoint> tls_ {nullptr}; @@ -325,11 +325,10 @@ ConnectionManager::Impl::connectDeviceStartIce(const DeviceId& deviceId, const d return; } - auto& response = info->response_; if (!ice) return; - auto sdp = ice->parseIceCandidates(response.ice_msg); + auto sdp = ice->parseIceCandidates(info->response_.ice_msg); if (not ice->startIce({sdp.rem_ufrag, sdp.rem_pwd}, std::move(sdp.rem_candidates))) { JAMI_WARN("[Account:%s] start ICE failed", account.getAccountID().c_str()); @@ -607,14 +606,14 @@ ConnectionManager::Impl::onPeerResponse(const PeerConnectionRequest& req) { auto device = req.from; JAMI_INFO() << account << " New response received from " << device.to_c_str(); - auto info = getInfo(device, req.id); - if (!info) { + if (auto info = getInfo(device, req.id)) { + std::lock_guard<std::mutex> lk {info->mutex_}; + info->responseReceived_ = true; + info->response_ = std::move(req); + info->responseCv_.notify_one(); + } else { JAMI_WARN() << account << " respond received, but cannot find request"; - return; } - info->responseReceived_ = true; - info->response_ = std::move(req); - info->responseCv_.notify_one(); } void diff --git a/src/media/audio/jack/jacklayer.cpp b/src/media/audio/jack/jacklayer.cpp index 2db2c191bea4232e87bc47584af26f086f8a38ab..571fc03234f2f86ab8482e480aba02b32fa827eb 100644 --- a/src/media/audio/jack/jacklayer.cpp +++ b/src/media/audio/jack/jacklayer.cpp @@ -413,8 +413,8 @@ void JackLayer::stopStream(AudioDeviceType) if (status_ != Status::Started) return; status_ = Status::Idle; + data_ready_.notify_one(); } - data_ready_.notify_one(); if (jack_deactivate(playbackClient_) or jack_deactivate(captureClient_)) { JAMI_ERR("JACK client could not deactivate"); diff --git a/src/media/audio/opensl/opensllayer.cpp b/src/media/audio/opensl/opensllayer.cpp index 7480fc683f67cf531441c6f33445e66ea334c5a2..27e8ce0b3bf9b4b8ce011086e58dbae774faba22 100644 --- a/src/media/audio/opensl/opensllayer.cpp +++ b/src/media/audio/opensl/opensllayer.cpp @@ -308,7 +308,6 @@ void OpenSLLayer::engineServiceRec() { recCv.notify_one(); - return; } void