mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-04-26 02:52:16 +00:00
fix: ping multiaddr from peer not previously stored in peerstore (#719)
This commit is contained in:
parent
6c7e5e5eef
commit
2440c872df
@ -324,7 +324,7 @@ class Libp2p extends EventEmitter {
|
|||||||
* @returns {Promise<Connection|*>}
|
* @returns {Promise<Connection|*>}
|
||||||
*/
|
*/
|
||||||
async dialProtocol (peer, protocols, options) {
|
async dialProtocol (peer, protocols, options) {
|
||||||
const { id, multiaddrs } = getPeer(peer, this.peerStore)
|
const { id, multiaddrs } = getPeer(peer)
|
||||||
let connection = this.connectionManager.get(id)
|
let connection = this.connectionManager.get(id)
|
||||||
|
|
||||||
if (!connection) {
|
if (!connection) {
|
||||||
@ -396,7 +396,12 @@ class Libp2p extends EventEmitter {
|
|||||||
* @returns {Promise<number>}
|
* @returns {Promise<number>}
|
||||||
*/
|
*/
|
||||||
ping (peer) {
|
ping (peer) {
|
||||||
const { id } = getPeer(peer)
|
const { id, multiaddrs } = getPeer(peer)
|
||||||
|
|
||||||
|
// If received multiaddr, ping it
|
||||||
|
if (multiaddrs) {
|
||||||
|
return ping(this, multiaddrs[0])
|
||||||
|
}
|
||||||
|
|
||||||
return ping(this, id)
|
return ping(this, id)
|
||||||
}
|
}
|
||||||
|
@ -15,11 +15,11 @@ const { PROTOCOL, PING_LENGTH } = require('./constants')
|
|||||||
/**
|
/**
|
||||||
* Ping a given peer and wait for its response, getting the operation latency.
|
* Ping a given peer and wait for its response, getting the operation latency.
|
||||||
* @param {Libp2p} node
|
* @param {Libp2p} node
|
||||||
* @param {PeerId} peer
|
* @param {PeerId|multiaddr} peer
|
||||||
* @returns {Promise<Number>}
|
* @returns {Promise<Number>}
|
||||||
*/
|
*/
|
||||||
async function ping (node, peer) {
|
async function ping (node, peer) {
|
||||||
log('dialing %s to %s', PROTOCOL, peer.toB58String())
|
log('dialing %s to %s', PROTOCOL, peer.toB58String ? peer.toB58String() : peer)
|
||||||
|
|
||||||
const { stream } = await node.dialProtocol(peer, PROTOCOL)
|
const { stream } = await node.dialProtocol(peer, PROTOCOL)
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ describe('ping', () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
nodes = await peerUtils.createPeer({
|
nodes = await peerUtils.createPeer({
|
||||||
number: 2,
|
number: 3,
|
||||||
config: baseOptions
|
config: baseOptions
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -25,7 +25,14 @@ describe('ping', () => {
|
|||||||
nodes[1].peerStore.addressBook.set(nodes[0].peerId, nodes[0].multiaddrs)
|
nodes[1].peerStore.addressBook.set(nodes[0].peerId, nodes[0].multiaddrs)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('ping once from peer0 to peer1', async () => {
|
it('ping once from peer0 to peer1 using a multiaddr', async () => {
|
||||||
|
const ma = `${nodes[2].multiaddrs[0]}/p2p/${nodes[2].peerId.toB58String()}`
|
||||||
|
const latency = await nodes[0].ping(ma)
|
||||||
|
|
||||||
|
expect(latency).to.be.a('Number')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('ping once from peer0 to peer1 using a peerId', async () => {
|
||||||
const latency = await nodes[0].ping(nodes[1].peerId)
|
const latency = await nodes[0].ping(nodes[1].peerId)
|
||||||
|
|
||||||
expect(latency).to.be.a('Number')
|
expect(latency).to.be.a('Number')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user