From 9219ee3cf3dd1d23c25936e9a1258a5890388c6f Mon Sep 17 00:00:00 2001 From: Stefano Gava Date: Sat, 23 Mar 2024 21:05:29 +0100 Subject: [PATCH] fix(H2 Client): pause stream if response data is sent before response event --- lib/dispatcher/client-h2.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/dispatcher/client-h2.js b/lib/dispatcher/client-h2.js index 8155d6e226a..c824ea9becb 100644 --- a/lib/dispatcher/client-h2.js +++ b/lib/dispatcher/client-h2.js @@ -253,6 +253,7 @@ function writeH2 (client, request) { /** @type {import('node:http2').ClientHttp2Stream} */ let stream + let isStreamResponseStarted = false const { hostname, port } = client[kUrl] @@ -388,6 +389,7 @@ function writeH2 (client, request) { ++session[kOpenStreams] stream.once('response', headers => { + isStreamResponseStarted = true const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers request.onResponseStarted() @@ -419,7 +421,7 @@ function writeH2 (client, request) { }) stream.on('data', (chunk) => { - if (request.onData(chunk) === false) { + if (!isStreamResponseStarted || request.onData(chunk) === false) { stream.pause() } })