Skip to content

Commit

Permalink
http2: added more tests for maxHeaderSize
Browse files Browse the repository at this point in the history
Refs: #33636
  • Loading branch information
preyunk committed May 29, 2020
1 parent 3ba02da commit 205f38a
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 12 deletions.
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
);
}
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());

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

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

0 comments on commit 205f38a

Please sign in to comment.