From a02ace2a24df1b9ad3e2f4b299832cb81dd7f930 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Wed, 15 May 2019 11:51:32 +0200
Subject: [PATCH] dhtrunner: stop socket after dht

---
 src/dhtrunner.cpp | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp
index 7465a156..445ccb9d 100644
--- a/src/dhtrunner.cpp
+++ b/src/dhtrunner.cpp
@@ -221,7 +221,8 @@ DhtRunner::shutdown(ShutdownCallback cb) {
 #endif
     std::lock_guard<std::mutex> lck(storage_mtx);
     pending_ops_prio.emplace([=](SecureDht& dht) mutable {
-        dht.shutdown(cb);
+        if (dht_)
+            dht_->shutdown(cb);
     });
     cv.notify_all();
 }
@@ -229,13 +230,16 @@ DhtRunner::shutdown(ShutdownCallback cb) {
 void
 DhtRunner::join()
 {
-    if (dht_)
-        if (auto sock = dht_->getSocket())
-            sock->stop();
     running = false;
     cv.notify_all();
     bootstrap_cv.notify_all();
     if (peerDiscovery_) peerDiscovery_->stop();
+    {
+        std::lock_guard<std::mutex> lck(dht_mtx);
+        if (dht_)
+            if (auto sock = dht_->getSocket())
+                sock->stop();
+    }
 
     if (dht_thread.joinable())
         dht_thread.join();
-- 
GitLab