diff --git a/src/circuit/hop.js b/src/circuit/hop.js index 17d9054..781e59c 100644 --- a/src/circuit/hop.js +++ b/src/circuit/hop.js @@ -62,15 +62,36 @@ class Hop extends EE { } // This is a relay request - validate and create a circuit - const srcPeerId = PeerId.createFromBytes(message.dstPeer.id).toB58String() - if (srcPeerId === this.peerInfo.id.toB58String()) { + let srcPeerId = null + let dstPeerId = null + try { + srcPeerId = PeerId.createFromBytes(message.srcPeer.id).toB58String() + dstPeerId = PeerId.createFromBytes(message.dstPeer.id).toB58String() + } catch (err) { + log.err(err) + + if (!srcPeerId) { + this.utils.writeResponse( + sh, + proto.Status.HOP_SRC_MULTIADDR_INVALID) + return sh.close() + } + + if (!dstPeerId) { + this.utils.writeResponse( + sh, + proto.Status.HOP_DST_MULTIADDR_INVALID) + return sh.close() + } + } + + if (srcPeerId === dstPeerId) { this.utils.writeResponse( sh, proto.Status.HOP_CANT_RELAY_TO_SELF) return sh.close() } - const dstPeerId = PeerId.createFromBytes(message.dstPeer.id).toB58String() if (!message.dstPeer.addrs.length) { // TODO: use encapsulate here const addr = multiaddr(`/p2p-circuit/ipfs/${dstPeerId}`).buffer diff --git a/test/hop.spec.js b/test/hop.spec.js index f760432..723fb58 100644 --- a/test/hop.spec.js +++ b/test/hop.spec.js @@ -169,8 +169,8 @@ describe('relay', () => { addrs: [multiaddr(`/ipfs/QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE`).buffer] }, dstPeer: { - id: PeerId.createFromB58String(`QmQvM2mpqkjyXWbTHSUidUAWN26GgdMphTh9iGDdjgVXCy`).id, - addrs: [multiaddr(`/ipfs/QmQvM2mpqkjyXWbTHSUidUAWN26GgdMphTh9iGDdjgVXCy`).buffer] + id: PeerId.createFromB58String(`QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE`).id, + addrs: [multiaddr(`/ipfs/QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE`).buffer] } }