diff options
author | Matteo Collina <hello@matteocollina.com> | 2018-04-17 17:24:22 +0200 |
---|---|---|
committer | Matteo Collina <hello@matteocollina.com> | 2018-04-20 15:12:22 +0200 |
commit | 08577906569a4c2de70ad2a861e2f8456cd8fcdd (patch) | |
tree | d90569aa4d6099df48ffe16bb22db777c8640a92 /lib/_stream_writable.js | |
parent | 700344e388b57651c190222f570d658504b8c06f (diff) | |
download | android-node-v8-08577906569a4c2de70ad2a861e2f8456cd8fcdd.tar.gz android-node-v8-08577906569a4c2de70ad2a861e2f8456cd8fcdd.tar.bz2 android-node-v8-08577906569a4c2de70ad2a861e2f8456cd8fcdd.zip |
stream: prevent 'end' to be emitted after 'error'
This PR adds _readableState.errorEmitted and add the tracking of it.
Fixes: https://github.com/nodejs/node/issues/6083
PR-URL: https://github.com/nodejs/node/pull/20104
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Diffstat (limited to 'lib/_stream_writable.js')
-rw-r--r-- | lib/_stream_writable.js | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js index d21daf0541..0891f85526 100644 --- a/lib/_stream_writable.js +++ b/lib/_stream_writable.js @@ -424,12 +424,22 @@ function onwriteError(stream, state, sync, er, cb) { // this can emit finish, and it will always happen // after error process.nextTick(finishMaybe, stream, state); + + // needed for duplex, fixes https://github.com/nodejs/node/issues/6083 + if (stream._readableState) { + stream._readableState.errorEmitted = true; + } stream._writableState.errorEmitted = true; stream.emit('error', er); } else { // the caller expect this to happen before if // it is async cb(er); + + // needed for duplex, fixes https://github.com/nodejs/node/issues/6083 + if (stream._readableState) { + stream._readableState.errorEmitted = true; + } stream._writableState.errorEmitted = true; stream.emit('error', er); // this can emit finish, but finish must |