From 74ead04295fe5a629f91f89ec43022e49ec79221 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Mon, 19 Jun 2023 12:16:54 +0200 Subject: [PATCH] fix returning too many nodes when FindNodeResultLimit!=BUCKET_SIZE Code assumed these two values to be the same, resulting in reception errors. Signed-off-by: Csaba Kiraly --- libp2pdht/private/eth/p2p/discoveryv5/protocol.nim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libp2pdht/private/eth/p2p/discoveryv5/protocol.nim b/libp2pdht/private/eth/p2p/discoveryv5/protocol.nim index ee620e0..85067de 100644 --- a/libp2pdht/private/eth/p2p/discoveryv5/protocol.nim +++ b/libp2pdht/private/eth/p2p/discoveryv5/protocol.nim @@ -343,7 +343,7 @@ proc handleFindNode(d: Protocol, fromId: NodeId, fromAddr: Address, # TODO: Still deduplicate also? if fn.distances.all(proc (x: uint16): bool = return x <= 256): d.sendNodes(fromId, fromAddr, reqId, - d.routingTable.neighboursAtDistances(fn.distances, seenOnly = true)) + d.routingTable.neighboursAtDistances(fn.distances, seenOnly = true, k = FindNodeResultLimit)) else: # At least one invalid distance, but the polite node we are, still respond # with empty nodes. @@ -352,7 +352,7 @@ proc handleFindNode(d: Protocol, fromId: NodeId, fromAddr: Address, proc handleFindNodeFast(d: Protocol, fromId: NodeId, fromAddr: Address, fnf: FindNodeFastMessage, reqId: RequestId) = d.sendNodes(fromId, fromAddr, reqId, - d.routingTable.neighbours(fnf.target, seenOnly = true)) + d.routingTable.neighbours(fnf.target, seenOnly = true, k = FindNodeResultLimit)) # TODO: if known, maybe we should add exact target even if not yet "seen" proc handleTalkReq(d: Protocol, fromId: NodeId, fromAddr: Address,