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': '/' };