From 37f1dd9ccdee8c54e1a3465f73e727eb87555fe5 Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Wed, 24 Nov 2021 09:42:24 +0100 Subject: [PATCH] stream: drain Transform with 0 highWaterMark MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: https://github.com/nodejs/node/issues/40935 PR-URL: https://github.com/nodejs/node/pull/40947 Reviewed-By: Matteo Collina Reviewed-By: Luigi Pinca Reviewed-By: Benjamin Gruenbaum Reviewed-By: Tobias Nießen --- lib/internal/streams/transform.js | 1 + test/parallel/test-stream-passthrough-drain.js | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 test/parallel/test-stream-passthrough-drain.js diff --git a/lib/internal/streams/transform.js b/lib/internal/streams/transform.js index 26e0b07c2956c8..cbd23185fad291 100644 --- a/lib/internal/streams/transform.js +++ b/lib/internal/streams/transform.js @@ -196,6 +196,7 @@ Transform.prototype._write = function(chunk, encoding, callback) { wState.ended || // Backwards compat. length === rState.length || // Backwards compat. rState.length < rState.highWaterMark || + rState.highWaterMark === 0 || rState.length === 0 ) { callback(); diff --git a/test/parallel/test-stream-passthrough-drain.js b/test/parallel/test-stream-passthrough-drain.js new file mode 100644 index 00000000000000..f5c98947e21e2e --- /dev/null +++ b/test/parallel/test-stream-passthrough-drain.js @@ -0,0 +1,8 @@ +'use strict'; +const common = require('../common'); +const { PassThrough } = require('stream'); + +const pt = new PassThrough({ highWaterMark: 0 }); +pt.on('drain', common.mustCall()); +pt.write('hello'); +pt.read();