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