mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-04-24 18:12:14 +00:00
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
This commit is contained in:
parent
62198414b3
commit
3f57edaf3b
@ -27,8 +27,8 @@ export class DHTPeerRouting implements PeerRouting {
|
|||||||
|
|
||||||
async * getClosestPeers (key: Uint8Array, options: AbortOptions = {}) {
|
async * getClosestPeers (key: Uint8Array, options: AbortOptions = {}) {
|
||||||
for await (const event of this.dht.getClosestPeers(key, options)) {
|
for await (const event of this.dht.getClosestPeers(key, options)) {
|
||||||
if (event.name === 'PEER_RESPONSE') {
|
if (event.name === 'FINAL_PEER') {
|
||||||
yield * event.closer
|
yield event.peer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,16 +112,15 @@ describe('peer-routing', () => {
|
|||||||
const dhtGetClosestPeersStub = sinon.stub(nodes[0].dht, 'getClosestPeers').callsFake(async function * () {
|
const dhtGetClosestPeersStub = sinon.stub(nodes[0].dht, 'getClosestPeers').callsFake(async function * () {
|
||||||
yield {
|
yield {
|
||||||
from: nodes[2].peerId,
|
from: nodes[2].peerId,
|
||||||
type: EventTypes.PEER_RESPONSE,
|
type: EventTypes.FINAL_PEER,
|
||||||
name: 'PEER_RESPONSE',
|
name: 'FINAL_PEER',
|
||||||
messageName: 'FIND_NODE',
|
messageName: 'FIND_NODE',
|
||||||
messageType: MessageType.FIND_NODE,
|
messageType: MessageType.FIND_NODE,
|
||||||
closer: [{
|
peer: {
|
||||||
id: nodes[1].peerId,
|
id: nodes[1].peerId,
|
||||||
multiaddrs: [],
|
multiaddrs: [],
|
||||||
protocols: []
|
protocols: []
|
||||||
}],
|
}
|
||||||
providers: []
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -589,26 +588,20 @@ describe('peer-routing', () => {
|
|||||||
const peerStoreAddressBookAddStub = sinon.spy(node.peerStore.addressBook, 'add')
|
const peerStoreAddressBookAddStub = sinon.spy(node.peerStore.addressBook, 'add')
|
||||||
const dhtGetClosestPeersStub = sinon.stub(node.dht, 'getClosestPeers').callsFake(async function * () {
|
const dhtGetClosestPeersStub = sinon.stub(node.dht, 'getClosestPeers').callsFake(async function * () {
|
||||||
yield {
|
yield {
|
||||||
name: 'PEER_RESPONSE',
|
name: 'FINAL_PEER',
|
||||||
type: EventTypes.PEER_RESPONSE,
|
type: EventTypes.FINAL_PEER,
|
||||||
messageName: 'FIND_NODE',
|
messageName: 'FIND_NODE',
|
||||||
messageType: MessageType.FIND_NODE,
|
messageType: MessageType.FIND_NODE,
|
||||||
from: peerIds[0],
|
from: peerIds[0],
|
||||||
closer: [
|
peer: results[0]
|
||||||
results[0]
|
|
||||||
],
|
|
||||||
providers: []
|
|
||||||
}
|
}
|
||||||
yield {
|
yield {
|
||||||
name: 'PEER_RESPONSE',
|
name: 'FINAL_PEER',
|
||||||
type: EventTypes.PEER_RESPONSE,
|
type: EventTypes.FINAL_PEER,
|
||||||
messageName: 'FIND_NODE',
|
messageName: 'FIND_NODE',
|
||||||
messageType: MessageType.FIND_NODE,
|
messageType: MessageType.FIND_NODE,
|
||||||
from: peerIds[0],
|
from: peerIds[0],
|
||||||
closer: [
|
peer: results[1]
|
||||||
results[1]
|
|
||||||
],
|
|
||||||
providers: []
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user