From 06988396e97e7229d94baa874f2bc1fac9864914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Mon, 6 Apr 2015 12:35:09 -0400 Subject: [PATCH] searches: only remove old expired nodes --- src/dht.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/dht.cpp b/src/dht.cpp index ac0070cf..77ab881c 100644 --- a/src/dht.cpp +++ b/src/dht.cpp @@ -610,7 +610,8 @@ Dht::Search::removeExpiredNode(time_point now) auto e = nodes.end(); while (e != nodes.cbegin()) { e = std::prev(e); - if (e->node->isExpired(now)) { + const Node& n = *e->node; + if (n.isExpired(now) and n.time + NODE_EXPIRE_TIME < now) { nodes.erase(e); return true; } @@ -662,7 +663,7 @@ Dht::Search::insertNode(std::shared_ptr<Node> node, time_point now, const Blob& } n = nodes.insert(n, SearchNode(node)); if (nodes.size() > SEARCH_NODES and not removeExpiredNode(now)) - nodes.pop_back(); + nodes.pop_back(); expired = false; } if (not token.empty()) { -- GitLab