diff --git a/src/listener.js b/src/listener.js index 30b3076..232a8f6 100644 --- a/src/listener.js +++ b/src/listener.js @@ -84,7 +84,10 @@ module.exports = (handler) => { listener.listen = (ma, callback) => { listeningAddr = ma - if (includes(ma.protoNames(), 'ipfs')) { + if (typeof ma.decapsulateCode === 'function') { + ipfsId = getIpfsId(ma) + listeningAddr = ma.decapsulateCode(IPFS_CODE) + } else if (includes(ma.protoNames(), 'ipfs')) { ipfsId = getIpfsId(ma) listeningAddr = ma.decapsulate('ipfs') } diff --git a/test/listen-dial.spec.js b/test/listen-dial.spec.js index 8a59872..a8c4174 100644 --- a/test/listen-dial.spec.js +++ b/test/listen-dial.spec.js @@ -127,6 +127,19 @@ describe('listen', () => { }) }) }) + + it('getAddrs preserves IPFS Id (multiaddr 7)', (done) => { + const mh = multiaddr7('/ip4/127.0.0.1/tcp/9090/p2p/Qmb6owHp6eaWArVbcJJbQSyifyJBttMMjYV76N2hMbf5Vw') + const listener = tcp.createListener((conn) => {}) + listener.listen(mh, () => { + listener.getAddrs((err, multiaddrs) => { + expect(err).to.not.exist() + expect(multiaddrs.length).to.equal(1) + expect(multiaddrs[0]).to.deep.equal(mh) + listener.close(done) + }) + }) + }) }) describe('dial', () => {