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