diff --git a/src/jamidht/connectionmanager.cpp b/src/jamidht/connectionmanager.cpp
index 6215afb4b03e8e3e2fce3dd8d07c86361b4054ab..d7facfaf5f4d380c2dc034542e42ce5369864de4 100644
--- a/src/jamidht/connectionmanager.cpp
+++ b/src/jamidht/connectionmanager.cpp
@@ -88,10 +88,8 @@ public:
             if (!erased)
                 ++it;
         }
-        if (!deviceId) {
-            dht::ThreadPool::io().run([infos = std::make_shared<decltype(infos_)>(
-                                           std::move(infos_))] { infos->clear(); });
-        }
+        if (!deviceId)
+            dht::ThreadPool::io().run([infos = std::move(infos_)]() mutable { infos.clear(); });
     }
     void shutdown()
     {
@@ -733,10 +731,8 @@ ConnectionManager::Impl::onDhtPeerRequest(const PeerConnectionRequest& req,
     }
     std::unique_lock<std::mutex> lk {info->mutex_};
     info->ice_ = Manager::instance()
-        .getIceTransportFactory().createUTransport(account.getAccountID().c_str(),
-                                                      1,
-                                                      true,
-                                                      ice_config);
+                     .getIceTransportFactory()
+                     .createUTransport(account.getAccountID().c_str(), 1, true, ice_config);
     if (not info->ice_) {
         JAMI_ERR("Cannot initialize ICE session.");
         if (connReadyCb_)
@@ -849,7 +845,8 @@ ConnectionManager::closeConnectionsWith(const DeviceId& deviceId)
         info->responseCv_.notify_all();
         if (info->ice_) {
             std::unique_lock<std::mutex> lk {info->mutex_};
-            info->ice_.reset();
+            dht::ThreadPool::io().run(
+                [ice = std::shared_ptr<IceTransport>(std::move(info->ice_))] {});
         }
     }
     // This will close the TLS Session