diff --git a/src/dht.cpp b/src/dht.cpp
index 0a9d3cfbf17df68cbb3d1a2e500792d360397cf5..9a9271f5f273458a8b2cb40532d7359c68905c41 100644
--- a/src/dht.cpp
+++ b/src/dht.cpp
@@ -864,7 +864,7 @@ Dht::Search::insertNode(std::shared_ptr<Node> node, time_point now, const Blob&
                 [=](const SearchNode& n) { return n.node->isGood(now) or n.candidate; }
             );
             if (farthest_not_expired_node != nodes.rend()) {
-                nodes.erase(farthest_not_expired_node.base());
+                nodes.erase(std::prev(farthest_not_expired_node.base()));
             } // else, all nodes are expired.
         }
         expired = false;