mirror of
https://github.com/nodejs/node.git
synced 2025-08-15 13:48:44 +02:00
console: avoid adding infinite error listeners
If the console destination is a unix pipe (net.Socket), write() is async. If the destination is broken, we are adding an 'error' event listener to avoid a process crash. This PR makes sure that we are adding that listener only once. Fixes: https://github.com/nodejs/node/issues/16767 PR-URL: https://github.com/nodejs/node/pull/16770 Fixes: https://github.com/nodejs/node/issues/16767 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
This commit is contained in:
parent
5dca787993
commit
d82bedcb7b
2 changed files with 28 additions and 1 deletions
|
@ -83,7 +83,10 @@ function createWriteErrorHandler(stream) {
|
|||
// an `error` event. Adding a `once` listener will keep that error
|
||||
// from becoming an uncaught exception, but since the handler is
|
||||
// removed after the event, non-console.* writes won’t be affected.
|
||||
stream.once('error', noop);
|
||||
// we are only adding noop if there is no one else listening for 'error'
|
||||
if (stream.listenerCount('error') === 0) {
|
||||
stream.on('error', noop);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue