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