stream: fix performance regression

PR-URL: https://github.com/nodejs/node/pull/39254
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Brian White
2021-07-04 07:14:22 -04:00
committed by Robert Nagy
parent ce00381751
commit a5ba28dda2

View File

@@ -56,19 +56,23 @@ function Duplex(options) {
Readable.call(this, options);
Writable.call(this, options);
this.allowHalfOpen = options?.allowHalfOpen !== false;
if (options) {
this.allowHalfOpen = options.allowHalfOpen !== false;
if (options?.readable === false) {
this._readableState.readable = false;
this._readableState.ended = true;
this._readableState.endEmitted = true;
}
if (options.readable === false) {
this._readableState.readable = false;
this._readableState.ended = true;
this._readableState.endEmitted = true;
}
if (options?.writable === false) {
this._writableState.writable = false;
this._writableState.ending = true;
this._writableState.ended = true;
this._writableState.finished = true;
if (options.writable === false) {
this._writableState.writable = false;
this._writableState.ending = true;
this._writableState.ended = true;
this._writableState.finished = true;
}
} else {
this.allowHalfOpen = true;
}
}