From c8a0b443f3117e2fa1343d2cb3c091f502b1a24e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Thu, 3 Jun 2021 16:50:35 -0400 Subject: [PATCH] dhtrunner: force execution of pending ops on shutdown --- src/dhtrunner.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp index b43854be..0157f631 100644 --- a/src/dhtrunner.cpp +++ b/src/dhtrunner.cpp @@ -294,6 +294,11 @@ DhtRunner::shutdown(ShutdownCallback cb, bool stop) { if (dht_) dht_->shutdown(onShutdown, stop); }); + // Force execution of pending ops + if (getStatus() == NodeStatus::Connecting) { + status4 = NodeStatus::Disconnected; + status6 = NodeStatus::Disconnected; + } cv.notify_all(); } @@ -368,6 +373,7 @@ DhtRunner::join() { std::lock_guard<std::mutex> lck(dht_mtx); resetDht(); + std::lock_guard<std::mutex> lck2(storage_mtx); status4 = NodeStatus::Disconnected; status6 = NodeStatus::Disconnected; } @@ -703,8 +709,11 @@ DhtRunner::loop_() NodeStatus nstatus4 = dht->updateStatus(AF_INET); NodeStatus nstatus6 = dht->updateStatus(AF_INET6); if (nstatus4 != status4 || nstatus6 != status6) { - status4 = nstatus4; - status6 = nstatus6; + { + std::lock_guard<std::mutex> lck(storage_mtx); + status4 = nstatus4; + status6 = nstatus6; + } if (statusCb) statusCb(status4, status6); } -- GitLab