Skip to content

Commit 205f38a

Browse files
committed
http2: added more tests for maxHeaderSize
Refs: #33636
1 parent 3ba02da commit 205f38a

File tree

4 files changed

+15
-12
lines changed

4 files changed

+15
-12
lines changed

lib/internal/http2/util.js

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -297,10 +297,6 @@ function getDefaultSettings() {
297297
holder.maxHeaderListSize = holder.maxHeaderSize =
298298
settingsBuffer[IDX_SETTINGS_MAX_HEADER_LIST_SIZE];
299299
}
300-
if ((flags & (1 << IDX_SETTINGS_MAX_HEADER_LIST_SIZE)) ===
301-
(1 << IDX_SETTINGS_MAX_HEADER_LIST_SIZE)) {
302-
holder.maxHeaderSize = settingsBuffer[IDX_SETTINGS_MAX_HEADER_LIST_SIZE];
303-
}
304300

305301
if ((flags & (1 << IDX_SETTINGS_ENABLE_CONNECT_PROTOCOL)) ===
306302
(1 << IDX_SETTINGS_ENABLE_CONNECT_PROTOCOL)) {
@@ -357,12 +353,11 @@ function updateSettingsBuffer(settings) {
357353
if (typeof settings.maxHeaderListSize === 'number' ||
358354
typeof settings.maxHeaderSize === 'number') {
359355
flags |= (1 << IDX_SETTINGS_MAX_HEADER_LIST_SIZE);
360-
if (settings.maxHeaderSize && settings.maxHeaderListSize) {
361-
if (settings.maxHeaderSize !== settings.maxHeaderListSize) {
362-
throw new ERR_HTTP2_INVALID_SETTING_VALUE.RangeError(
363-
'maxHeaderListSize', settings.maxHeaderListSize
364-
);
365-
}
356+
if(settings.maxHeaderListSize !== undefined &&
357+
(settings.maxHeaderListSize !== maxHeaderSize)) {
358+
throw new ERR_HTTP2_INVALID_SETTING_VALUE.RangeError(
359+
'maxHeaderListSize', settings.maxHeaderListSize
360+
);
366361
}
367362
settingsBuffer[IDX_SETTINGS_MAX_HEADER_LIST_SIZE] =
368363
settings.maxHeaderListSize !== undefined ?

test/parallel/test-http2-client-settings-before-connect.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ server.listen(0, common.mustCall(() => {
3232
['maxConcurrentStreams', 2 ** 32, RangeError],
3333
['maxHeaderListSize', -1, RangeError],
3434
['maxHeaderListSize', 2 ** 32, RangeError],
35+
['maxHeaderSize', -1, RangeError],
36+
['maxHeaderSize', 2 ** 32, RangeError],
3537
['enablePush', 'a', TypeError],
3638
['enablePush', 1, TypeError],
3739
['enablePush', 0, TypeError],

test/parallel/test-http2-session-settings.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ server.on(
1919
assert.strictEqual(typeof settings.maxFrameSize, 'number');
2020
assert.strictEqual(typeof settings.maxConcurrentStreams, 'number');
2121
assert.strictEqual(typeof settings.maxHeaderListSize, 'number');
22+
assert.strictEqual(typeof settings.maxHeaderSize, 'number');
2223
};
2324

2425
const localSettings = stream.session.localSettings;
@@ -100,7 +101,9 @@ server.listen(
100101
['maxFrameSize', 16383],
101102
['maxFrameSize', 2 ** 24],
102103
['maxHeaderListSize', -1],
103-
['maxHeaderListSize', 2 ** 32]
104+
['maxHeaderListSize', 2 ** 32],
105+
['maxHeaderSize', -1],
106+
['maxHeaderSize', 2 ** 32]
104107
].forEach((i) => {
105108
const settings = {};
106109
settings[i[0]] = i[1];

test/parallel/test-http2-too-large-headers.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ const {
99
NGHTTP2_ENHANCE_YOUR_CALM
1010
} = http2.constants;
1111

12-
const server = http2.createServer({ settings: { maxHeaderListSize: 100 } });
12+
let server = http2.createServer({ settings: { maxHeaderListSize: 100 } });
13+
server.on('stream', common.mustNotCall());
14+
15+
server = http2.createServer({ settings: {maxHeaderSize: 100 } });
1316
server.on('stream', common.mustNotCall());
1417

1518
server.listen(0, common.mustCall(() => {

0 commit comments

Comments
 (0)