From 20f64a96de07bd588e81f8813440181d50097cbe Mon Sep 17 00:00:00 2001 From: ZYSzys Date: Tue, 1 Oct 2019 23:06:44 +0800 Subject: [PATCH] http2: use the latest settings Fixes: https://github.com/nodejs/node/issues/29764 PR-URL: https://github.com/nodejs/node/pull/29780 Reviewed-By: James M Snell Reviewed-By: Luigi Pinca Reviewed-By: Anna Henningsen Reviewed-By: Colin Ihrig Reviewed-By: Beth Griggs Reviewed-By: Anto Aravinth Reviewed-By: Ruben Bridgewater --- lib/internal/http2/core.js | 1 + test/parallel/test-http2-session-settings.js | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/internal/http2/core.js b/lib/internal/http2/core.js index 5046539c570841..bb9e43ca8ea0bc 100644 --- a/lib/internal/http2/core.js +++ b/lib/internal/http2/core.js @@ -504,6 +504,7 @@ function onSettings() { return; session[kUpdateTimer](); debugSessionObj(session, 'new settings received'); + session[kRemoteSettings] = undefined; session.emit('remoteSettings', session.remoteSettings); } diff --git a/test/parallel/test-http2-session-settings.js b/test/parallel/test-http2-session-settings.js index 6061808082519d..29b6365ef1a3c4 100644 --- a/test/parallel/test-http2-session-settings.js +++ b/test/parallel/test-http2-session-settings.js @@ -38,6 +38,12 @@ server.on( }) ); +server.on('session', (session) => { + session.settings({ + maxConcurrentStreams: 2 + }); +}); + server.listen( 0, common.mustCall(() => { @@ -57,11 +63,18 @@ server.listen( assert.strictEqual(settings.maxFrameSize, 16384); }, 2) ); + + let calledOnce = false; client.on( 'remoteSettings', common.mustCall((settings) => { assert(settings); - }) + assert.strictEqual( + settings.maxConcurrentStreams, + calledOnce ? 2 : (2 ** 32) - 1 + ); + calledOnce = true; + }, 2) ); const headers = { ':path': '/' };