From 02b1424958fcef99efb799dd1f9dba61f8edbb76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Wed, 9 Dec 2020 16:45:55 -0500 Subject: [PATCH] connectionmanager: move ice destruction and cleanup Change-Id: Ia781eae9ace1fbabed4d353e1d43bfe1093f88d3 --- src/jamidht/connectionmanager.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/jamidht/connectionmanager.cpp b/src/jamidht/connectionmanager.cpp index 6215afb4b0..d7facfaf5f 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 -- GitLab