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