From 3f57edaf3b472daf8ea6e914f38ff9ad6cf9b49c Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Fri, 23 Sep 2022 09:31:04 +0100 Subject: [PATCH] fix: yield only final peers from dht getClosestPeers (#1380) * fix: yield final peers from dht getClosestPeers `PEER_RESPONSE` is an intermediate event, we should only yield from `FINAL_PEER` events as we'll only get `K` of those. * chore: fix test --- src/dht/dht-peer-routing.ts | 4 ++-- test/peer-routing/peer-routing.node.ts | 27 ++++++++++---------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/dht/dht-peer-routing.ts b/src/dht/dht-peer-routing.ts index 86b6eb57..e1d5ddaf 100644 --- a/src/dht/dht-peer-routing.ts +++ b/src/dht/dht-peer-routing.ts @@ -27,8 +27,8 @@ export class DHTPeerRouting implements PeerRouting { async * getClosestPeers (key: Uint8Array, options: AbortOptions = {}) { for await (const event of this.dht.getClosestPeers(key, options)) { - if (event.name === 'PEER_RESPONSE') { - yield * event.closer + if (event.name === 'FINAL_PEER') { + yield event.peer } } } diff --git a/test/peer-routing/peer-routing.node.ts b/test/peer-routing/peer-routing.node.ts index 204dba11..1cffc5d6 100644 --- a/test/peer-routing/peer-routing.node.ts +++ b/test/peer-routing/peer-routing.node.ts @@ -112,16 +112,15 @@ describe('peer-routing', () => { const dhtGetClosestPeersStub = sinon.stub(nodes[0].dht, 'getClosestPeers').callsFake(async function * () { yield { from: nodes[2].peerId, - type: EventTypes.PEER_RESPONSE, - name: 'PEER_RESPONSE', + type: EventTypes.FINAL_PEER, + name: 'FINAL_PEER', messageName: 'FIND_NODE', messageType: MessageType.FIND_NODE, - closer: [{ + peer: { id: nodes[1].peerId, multiaddrs: [], protocols: [] - }], - providers: [] + } } }) @@ -589,26 +588,20 @@ describe('peer-routing', () => { const peerStoreAddressBookAddStub = sinon.spy(node.peerStore.addressBook, 'add') const dhtGetClosestPeersStub = sinon.stub(node.dht, 'getClosestPeers').callsFake(async function * () { yield { - name: 'PEER_RESPONSE', - type: EventTypes.PEER_RESPONSE, + name: 'FINAL_PEER', + type: EventTypes.FINAL_PEER, messageName: 'FIND_NODE', messageType: MessageType.FIND_NODE, from: peerIds[0], - closer: [ - results[0] - ], - providers: [] + peer: results[0] } yield { - name: 'PEER_RESPONSE', - type: EventTypes.PEER_RESPONSE, + name: 'FINAL_PEER', + type: EventTypes.FINAL_PEER, messageName: 'FIND_NODE', messageType: MessageType.FIND_NODE, from: peerIds[0], - closer: [ - results[1] - ], - providers: [] + peer: results[1] } })