diff --git a/src/ice_transport.cpp b/src/ice_transport.cpp
index faa88f577b93c2a372edd26578a5e0875dcc3c1d..62af6e5488f753718d240d022c15a46491c56eb9 100644
--- a/src/ice_transport.cpp
+++ b/src/ice_transport.cpp
@@ -316,7 +316,6 @@ IceTransport::Impl::Impl(const char* name,
             })
     , on_initdone_cb_(options.onInitDone)
     , on_negodone_cb_(options.onNegoDone)
-    , on_recv_cb_(options.onRecvReady)
     , component_count_(component_count)
     , compIO_(component_count)
     , initiatorSession_(master)
@@ -959,10 +958,6 @@ IceTransport::Impl::onReceiveData(unsigned comp_id, void* pkt, pj_size_t size)
         return;
     auto& io = compIO_[comp_id - 1];
     std::unique_lock<std::mutex> lk(io.mutex);
-    if (on_recv_cb_) {
-        on_recv_cb_();
-    }
-
     if (io.cb) {
         io.cb((uint8_t*) pkt, size);
     } else {
@@ -1767,9 +1762,8 @@ IceSocket::waitForData(std::chrono::milliseconds timeout)
 void
 IceSocket::setOnRecv(IceRecvCb cb)
 {
-    if (!ice_transport_.get())
-        return;
-    return ice_transport_->setOnRecv(compId_, cb);
+    if (ice_transport_)
+        ice_transport_->setOnRecv(compId_, cb);
 }
 
 uint16_t
diff --git a/src/ice_transport.h b/src/ice_transport.h
index 33c7e0f9b2b4501d10e90ff14c406a4895115e33..e5db678f6da737ee60fe500c675ac243184bc75c 100644
--- a/src/ice_transport.h
+++ b/src/ice_transport.h
@@ -98,7 +98,6 @@ struct IceTransportOptions
     bool upnpEnable {false};
     IceTransportCompleteCb onInitDone {};
     IceTransportCompleteCb onNegoDone {};
-    IceRecvInfo onRecvReady {}; // Detect that we have data to read but without destroying the buffer
     std::vector<StunServerInfo> stunServers;
     std::vector<TurnServerInfo> turnServers;
     bool tcpEnable {false}; // If we want to use TCP
diff --git a/src/jamidht/connectionmanager.cpp b/src/jamidht/connectionmanager.cpp
index 5d97023053b59bb13661450e10570ff8919eb0c8..d8d7f146452cb7571d18cbcaecb77dbca3078c23 100644
--- a/src/jamidht/connectionmanager.cpp
+++ b/src/jamidht/connectionmanager.cpp
@@ -694,15 +694,8 @@ ConnectionManager::Impl::onDhtPeerRequest(const PeerConnectionRequest& req,
         std::condition_variable cv {};
         bool ready {false};
     };
-    auto iceReady = std::make_shared<IceReady>();
     auto ice_config = account.getIceOptions();
     ice_config.tcpEnable = true;
-    ice_config.onRecvReady = [iceReady]() {
-        auto& ir = *iceReady;
-        std::lock_guard<std::mutex> lk {ir.mtx};
-        ir.ready = true;
-        ir.cv.notify_one();
-    };
     ice_config.onInitDone = [w = weak(), req](bool ok) {
         auto shared = w.lock();
         if (!shared)
@@ -734,10 +727,8 @@ ConnectionManager::Impl::onDhtPeerRequest(const PeerConnectionRequest& req,
         }
 
         dht::ThreadPool::io().run([w = std::move(w), req = std::move(req)] {
-            auto shared = w.lock();
-            if (!shared)
-                return;
-            shared->onRequestOnNegoDone(req);
+            if (auto shared = w.lock())
+                shared->onRequestOnNegoDone(req);
         });
     };
 
diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index 969ebfe1e28abaa90d41aea10e805272c8b129fa..663bd4033d29ab321819287d038db71e32a30aeb 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -2350,14 +2350,13 @@ JamiAccount::incomingCall(dht::IceCandidates&& msg,
         return;
     }
     auto callId = call->getCallId();
-    auto onNegoDone = [callId, w = weak()](bool) {
+    auto iceOptions = getIceOptions();
+    iceOptions.onNegoDone = [callId, w = weak()](bool) {
         runOnMainThread([callId, w]() {
             if (auto shared = w.lock())
                 shared->checkPendingCall(callId);
         });
     };
-    auto iceOptions = getIceOptions();
-    iceOptions.onNegoDone = onNegoDone;
     auto ice = createIceTransport(("sip:" + call->getCallId()).c_str(),
                                   ICE_COMPONENTS,
                                   false,