diff --git a/src/dht.cpp b/src/dht.cpp index ac0070cf911bce0f71183376077517ed137264fc..77ab881c2eebcae91bfa2ed8dfd7bc6c450fc837 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()) {