From 7e2ae4687081b44965d54559fd4d565787ecf9f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Mon, 13 Jun 2016 15:55:34 -0400 Subject: [PATCH] dht: clear search before expiring it --- src/dht.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/dht.cpp b/src/dht.cpp index e1e81063..25e04ff4 100644 --- a/src/dht.cpp +++ b/src/dht.cpp @@ -323,7 +323,7 @@ struct Dht::Search { callbacks.clear(); listeners.clear(); nodes.clear(); - nextSearchStep = {}; + nextSearchStep.reset(); } }; @@ -431,10 +431,10 @@ Dht::trySearchInsert(const std::shared_ptr<Node>& node) auto family = node->getFamily(); auto& srs = family == AF_INET ? searches4 : searches6; for (auto& srp : srs) { - auto& s = srp.second; - if (s->insertNode(node, now)) { + auto& s = *srp.second; + if (s.insertNode(node, now)) { inserted = true; - scheduler.edit(s->nextSearchStep, s->getNextStepTime(types, now)); + scheduler.edit(s.nextSearchStep, s.getNextStepTime(types, now)); } } return inserted; @@ -670,10 +670,11 @@ Dht::expireSearches() { auto t = scheduler.time() - SEARCH_EXPIRE_TIME; auto expired = [&](std::pair<const InfoHash, std::shared_ptr<Search>>& srp) { - auto& sr = srp.second; - auto b = sr->callbacks.empty() && sr->announce.empty() && sr->listeners.empty() && sr->step_time < t; + auto& sr = *srp.second; + auto b = sr.callbacks.empty() && sr.announce.empty() && sr.listeners.empty() && sr.step_time < t; if (b) { - DHT_LOG.DEBUG("Removing search %s ", srp.first.toString().c_str()); + DHT_LOG.DEBUG("Removing search %s", srp.first.toString().c_str()); + sr.clear(); return b; } else { return false; } }; -- GitLab