feat!: limit protocol streams per-connection (#1255)

* feat: limit protocol streams per-connection

Uses the `maxInboundStreams` and `maxOutboundStreams` of the `registrar.handle`
opts to limit the number of concurrent streams open on each connection
on a per-protocol basis.

Both values default to 1 so some tuning will be necessary to set
appropriate values for some protocols.

* chore: make error codes consistent

* chore: fix up examples
This commit is contained in:
Alex Potsides
2022-06-17 14:46:31 +01:00
committed by GitHub
parent 5371729646
commit de30c2cec7
43 changed files with 472 additions and 181 deletions

View File

@ -80,7 +80,7 @@ describe('Dialing (via relay, TCP)', () => {
expect(connection.remotePeer.toBytes()).to.eql(dstLibp2p.peerId.toBytes())
expect(connection.remoteAddr).to.eql(dialAddr)
const { stream: echoStream } = await connection.newStream('/echo/1.0.0')
const echoStream = await connection.newStream('/echo/1.0.0')
const input = uint8ArrayFromString('hello')
const [output] = await pipe(
@ -156,7 +156,7 @@ describe('Dialing (via relay, TCP)', () => {
// send an invalid relay message from the relay to the destination peer
const connections = relayLibp2p.getConnections(dstLibp2p.peerId)
const { stream } = await connections[0].newStream(RELAY_CODEC)
const stream = await connections[0].newStream(RELAY_CODEC)
const streamHandler = new StreamHandler({ stream })
streamHandler.write({
type: CircuitRelay.Type.STATUS