fix: increase maxlisteners on event target (#1050)

Sometimes you encounter peers with lots of addresses. When this happens
you can attach more than 10x event listeners to the abort signal we
use to abort all the dials - this causes node to print a warning
which is misleading.

This PR increases the default number of listeners on the signal.

Fixes #900
This commit is contained in:
Alex Potsides 2021-12-06 19:54:44 +00:00 committed by GitHub
parent ae21299ade
commit b70fb43427
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,11 +1,12 @@
'use strict' 'use strict'
const errCode = require('err-code') const errCode = require('err-code')
const AbortController = require('abort-controller').default
const { anySignal } = require('any-signal') const { anySignal } = require('any-signal')
// @ts-ignore p-fifo does not export types // @ts-ignore p-fifo does not export types
const FIFO = require('p-fifo') const FIFO = require('p-fifo')
const pAny = require('p-any') const pAny = require('p-any')
// @ts-expect-error setMaxListeners is missing from the types
const { setMaxListeners } = require('events')
/** /**
* @typedef {import('libp2p-interfaces/src/connection').Connection} Connection * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
@ -59,7 +60,12 @@ class DialRequest {
const tokenHolder = new FIFO() const tokenHolder = new FIFO()
tokens.forEach(token => tokenHolder.push(token)) tokens.forEach(token => tokenHolder.push(token))
const dialAbortControllers = this.addrs.map(() => new AbortController()) const dialAbortControllers = this.addrs.map(() => {
const controller = new AbortController()
setMaxListeners && setMaxListeners(Infinity, controller.signal)
return controller
})
let completedDials = 0 let completedDials = 0
try { try {