From 9d3514e0874b4fea12e1926bf887eb03fd5ac8f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Wed, 26 Oct 2016 17:38:45 -0400 Subject: [PATCH] dhtrunner: don't run ops if disconnected and bootstraping --- src/dhtrunner.cpp | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp index 2d99e687..a7d41cf0 100644 --- a/src/dhtrunner.cpp +++ b/src/dhtrunner.cpp @@ -106,7 +106,8 @@ DhtRunner::run(const sockaddr_in* local4, const sockaddr_in6* local6, DhtRunner: std::lock_guard<std::mutex> lck(storage_mtx); if (not pending_ops_prio.empty()) return true; - if (not pending_ops.empty() and getStatus() != NodeStatus::Connecting) + auto s = getStatus(); + if (not pending_ops.empty() and (s == NodeStatus::Connected or (s == NodeStatus::Disconnected and not bootstraping))) return true; } return false; @@ -305,22 +306,14 @@ DhtRunner::loop_() decltype(pending_ops) ops {}; { std::lock_guard<std::mutex> lck(storage_mtx); - ops = std::move(pending_ops_prio); + auto s = getStatus(); + ops = (pending_ops_prio.empty() && (s == NodeStatus::Connected or (s == NodeStatus::Disconnected and not bootstraping))) ? + std::move(pending_ops) : std::move(pending_ops_prio); } while (not ops.empty()) { ops.front()(*dht_); ops.pop(); } - if (getStatus() != NodeStatus::Connecting) { - { - std::lock_guard<std::mutex> lck(storage_mtx); - ops = std::move(pending_ops); - } - while (not ops.empty()) { - ops.front()(*dht_); - ops.pop(); - } - } time_point wakeup {}; decltype(rcv) received {}; -- GitLab