Skip to content

Commit 52a615f

Browse files
committed
fix: expose the muxed stream interface on inbound streams
1 parent 698c1df commit 52a615f

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

src/upgrader.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ class Upgrader {
232232
log('%s: incoming stream opened on %s', direction, protocol)
233233
if (this.metrics) this.metrics.trackStream({ stream, remotePeer, protocol })
234234
connection.addStream(muxedStream, { protocol })
235-
this._onStream({ connection, stream, protocol })
235+
this._onStream({ connection, stream: { ...muxedStream, ...stream }, protocol })
236236
} catch (err) {
237237
log.error(err)
238238
}

test/upgrading/upgrader.spec.js

+35
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
const { Buffer } = require('buffer')
55
const chai = require('chai')
66
chai.use(require('dirty-chai'))
7+
chai.use(require('chai-as-promised'))
78
const { expect } = chai
89
const sinon = require('sinon')
910
const Muxer = require('libp2p-mplex')
@@ -401,6 +402,40 @@ describe('libp2p.upgrader', () => {
401402
expect(libp2p.upgrader.protocols.get('/echo/1.0.1')).to.equal(echoHandler)
402403
})
403404

405+
it('should return muxed streams', async () => {
406+
const remotePeer = peers[1]
407+
libp2p = new Libp2p({
408+
peerId: peers[0],
409+
modules: {
410+
transport: [Transport],
411+
streamMuxer: [Muxer],
412+
connEncryption: [Crypto]
413+
}
414+
})
415+
const echoHandler = () => {}
416+
libp2p.handle(['/echo/1.0.0'], echoHandler)
417+
418+
const remoteUpgrader = new Upgrader({
419+
localPeer: remotePeer,
420+
muxers: new Map([[Muxer.multicodec, Muxer]]),
421+
cryptos: new Map([[Crypto.protocol, Crypto]])
422+
})
423+
remoteUpgrader.protocols.set('/echo/1.0.0', echoHandler)
424+
425+
const { inbound, outbound } = mockMultiaddrConnPair({ addrs, remotePeer })
426+
const [localConnection] = await Promise.all([
427+
libp2p.upgrader.upgradeOutbound(outbound),
428+
remoteUpgrader.upgradeInbound(inbound)
429+
])
430+
sinon.spy(remoteUpgrader, '_onStream')
431+
432+
const { stream } = await localConnection.newStream(['/echo/1.0.0'])
433+
expect(stream).to.include.keys(['id', 'close', 'reset', 'timeline'])
434+
435+
const [arg0] = remoteUpgrader._onStream.getCall(0).args
436+
expect(arg0.stream).to.include.keys(['id', 'close', 'reset', 'timeline'])
437+
})
438+
404439
it('should emit connect and disconnect events', async () => {
405440
const remotePeer = peers[1]
406441
libp2p = new Libp2p({

0 commit comments

Comments
 (0)