From 03c363e18ddd632481dedb0a7a71cd37f62d1a03 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Tue, 12 Sep 2023 11:23:24 +0200 Subject: [PATCH] fix addValue not enough nodes addValue cycle should consider number of nodes found. Signed-off-by: Csaba Kiraly --- libp2pdht/private/eth/p2p/discoveryv5/protocol.nim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libp2pdht/private/eth/p2p/discoveryv5/protocol.nim b/libp2pdht/private/eth/p2p/discoveryv5/protocol.nim index ebfbe0d..22a73bc 100644 --- a/libp2pdht/private/eth/p2p/discoveryv5/protocol.nim +++ b/libp2pdht/private/eth/p2p/discoveryv5/protocol.nim @@ -871,7 +871,9 @@ proc addValue*( # TODO: lookup is specified as not returning local, even if that is the closest. Is this OK? if res.len == 0: res.add(d.localNode) - for toNode in res[0 ..< ValueReplication]: + if res.len < ValueReplication: + trace "addValue lookup did not return enough nodes", key=cId, len=res.len, ValueReplication + for toNode in res[0 ..< min(ValueReplication, res.len)]: if toNode != d.localNode: let reqId = RequestId.init(d.rng[]) d.sendRequest(toNode, AddValueMessage(cId: cId, value: value), reqId)