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