Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
http2: added more tests for maxHeaderSize
Refs: #33636
  • Loading branch information
preyunk committed May 29, 2020
commit 205f38ab750f9e76afe9fe636aad90ecbe3ef0d5
15 changes: 5 additions & 10 deletions lib/internal/http2/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -297,10 +297,6 @@ function getDefaultSettings() {
holder.maxHeaderListSize = holder.maxHeaderSize =
settingsBuffer[IDX_SETTINGS_MAX_HEADER_LIST_SIZE];
}
if ((flags & (1 << IDX_SETTINGS_MAX_HEADER_LIST_SIZE)) ===
(1 << IDX_SETTINGS_MAX_HEADER_LIST_SIZE)) {
holder.maxHeaderSize = settingsBuffer[IDX_SETTINGS_MAX_HEADER_LIST_SIZE];
}

if ((flags & (1 << IDX_SETTINGS_ENABLE_CONNECT_PROTOCOL)) ===
(1 << IDX_SETTINGS_ENABLE_CONNECT_PROTOCOL)) {
Expand Down Expand Up @@ -357,12 +353,11 @@ function updateSettingsBuffer(settings) {
if (typeof settings.maxHeaderListSize === 'number' ||
typeof settings.maxHeaderSize === 'number') {
flags |= (1 << IDX_SETTINGS_MAX_HEADER_LIST_SIZE);
if (settings.maxHeaderSize && settings.maxHeaderListSize) {
if (settings.maxHeaderSize !== settings.maxHeaderListSize) {
throw new ERR_HTTP2_INVALID_SETTING_VALUE.RangeError(
'maxHeaderListSize', settings.maxHeaderListSize
);
}
if(settings.maxHeaderListSize !== undefined &&
(settings.maxHeaderListSize !== maxHeaderSize)) {
throw new ERR_HTTP2_INVALID_SETTING_VALUE.RangeError(
'maxHeaderListSize', settings.maxHeaderListSize
);
}
Comment thread
himself65 marked this conversation as resolved.
settingsBuffer[IDX_SETTINGS_MAX_HEADER_LIST_SIZE] =
settings.maxHeaderListSize !== undefined ?
Expand Down
2 changes: 2 additions & 0 deletions test/parallel/test-http2-client-settings-before-connect.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ server.listen(0, common.mustCall(() => {
['maxConcurrentStreams', 2 ** 32, RangeError],
['maxHeaderListSize', -1, RangeError],
['maxHeaderListSize', 2 ** 32, RangeError],
['maxHeaderSize', -1, RangeError],
['maxHeaderSize', 2 ** 32, RangeError],
['enablePush', 'a', TypeError],
['enablePush', 1, TypeError],
['enablePush', 0, TypeError],
Expand Down
5 changes: 4 additions & 1 deletion test/parallel/test-http2-session-settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ server.on(
assert.strictEqual(typeof settings.maxFrameSize, 'number');
assert.strictEqual(typeof settings.maxConcurrentStreams, 'number');
assert.strictEqual(typeof settings.maxHeaderListSize, 'number');
assert.strictEqual(typeof settings.maxHeaderSize, 'number');
};

const localSettings = stream.session.localSettings;
Expand Down Expand Up @@ -100,7 +101,9 @@ server.listen(
['maxFrameSize', 16383],
['maxFrameSize', 2 ** 24],
['maxHeaderListSize', -1],
['maxHeaderListSize', 2 ** 32]
['maxHeaderListSize', 2 ** 32],
['maxHeaderSize', -1],
['maxHeaderSize', 2 ** 32]
].forEach((i) => {
const settings = {};
settings[i[0]] = i[1];
Expand Down
5 changes: 4 additions & 1 deletion test/parallel/test-http2-too-large-headers.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ const {
NGHTTP2_ENHANCE_YOUR_CALM
} = http2.constants;

const server = http2.createServer({ settings: { maxHeaderListSize: 100 } });
let server = http2.createServer({ settings: { maxHeaderListSize: 100 } });
server.on('stream', common.mustNotCall());

Comment thread
himself65 marked this conversation as resolved.
Outdated
server = http2.createServer({ settings: {maxHeaderSize: 100 } });
server.on('stream', common.mustNotCall());

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