Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 00f153d

Browse filesBrowse files
jasnellBethGriggs
authored andcommitted
http2: improve http2 code a bit
Multiple general improvements to http2 internals for readability and efficiency [This backport applied to v10.x cleanly.] Backport-PR-URL: #29123 PR-URL: #23984 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
1 parent b743000 commit 00f153d
Copy full SHA for 00f153d

File tree

Expand file treeCollapse file tree

5 files changed

+212
-194
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

5 files changed

+212
-194
lines changed
Open diff view settings
Collapse file

‎benchmark/http2/headers.js‎

Copy file name to clipboardExpand all lines: benchmark/http2/headers.js
+1-2Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ function main({ n, nheaders }) {
4040

4141
function doRequest(remaining) {
4242
const req = client.request(headersObject);
43-
req.end();
44-
req.on('data', () => {});
43+
req.resume();
4544
req.on('end', () => {
4645
if (remaining > 0) {
4746
doRequest(remaining - 1);
Collapse file

‎benchmark/http2/respond-with-fd.js‎

Copy file name to clipboardExpand all lines: benchmark/http2/respond-with-fd.js
+3-3Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ const fs = require('fs');
77
const file = path.join(path.resolve(__dirname, '../fixtures'), 'alice.html');
88

99
const bench = common.createBenchmark(main, {
10-
requests: [100, 1000, 10000, 100000],
11-
streams: [100, 200, 1000],
12-
clients: [1, 2],
10+
requests: [100, 1000, 5000],
11+
streams: [1, 10, 20, 40, 100, 200],
12+
clients: [2],
1313
benchmarker: ['h2load']
1414
}, { flags: ['--no-warnings', '--expose-http2'] });
1515

Collapse file

‎benchmark/http2/simple.js‎

Copy file name to clipboardExpand all lines: benchmark/http2/simple.js
+3-3Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ const fs = require('fs');
66
const file = path.join(path.resolve(__dirname, '../fixtures'), 'alice.html');
77

88
const bench = common.createBenchmark(main, {
9-
requests: [100, 1000, 10000, 100000],
10-
streams: [100, 200, 1000],
11-
clients: [1, 2],
9+
requests: [100, 1000, 5000],
10+
streams: [1, 10, 20, 40, 100, 200],
11+
clients: [2],
1212
benchmarker: ['h2load']
1313
}, { flags: ['--no-warnings', '--expose-http2'] });
1414

Collapse file

‎lib/internal/http2/util.js‎

Copy file name to clipboardExpand all lines: lib/internal/http2/util.js
+25-19Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -430,14 +430,20 @@ function mapToHeaders(map,
430430
let count = 0;
431431
const keys = Object.keys(map);
432432
const singles = new Set();
433-
for (var i = 0; i < keys.length; i++) {
434-
let key = keys[i];
435-
let value = map[key];
433+
let i;
434+
let isArray;
435+
let key;
436+
let value;
437+
let isSingleValueHeader;
438+
let err;
439+
for (i = 0; i < keys.length; i++) {
440+
key = keys[i];
441+
value = map[key];
436442
if (value === undefined || key === '')
437443
continue;
438444
key = key.toLowerCase();
439-
const isSingleValueHeader = kSingleValueHeaders.has(key);
440-
let isArray = Array.isArray(value);
445+
isSingleValueHeader = kSingleValueHeaders.has(key);
446+
isArray = Array.isArray(value);
441447
if (isArray) {
442448
switch (value.length) {
443449
case 0:
@@ -459,26 +465,26 @@ function mapToHeaders(map,
459465
singles.add(key);
460466
}
461467
if (key[0] === ':') {
462-
const err = assertValuePseudoHeader(key);
468+
err = assertValuePseudoHeader(key);
463469
if (err !== undefined)
464470
return err;
465471
ret = `${key}\0${value}\0${ret}`;
466472
count++;
467-
} else {
468-
if (isIllegalConnectionSpecificHeader(key, value)) {
469-
return new ERR_HTTP2_INVALID_CONNECTION_HEADERS(key);
470-
}
471-
if (isArray) {
472-
for (var k = 0; k < value.length; k++) {
473-
const val = String(value[k]);
474-
ret += `${key}\0${val}\0`;
475-
}
476-
count += value.length;
477-
} else {
478-
ret += `${key}\0${value}\0`;
479-
count++;
473+
continue;
474+
}
475+
if (isIllegalConnectionSpecificHeader(key, value)) {
476+
return new ERR_HTTP2_INVALID_CONNECTION_HEADERS(key);
477+
}
478+
if (isArray) {
479+
for (var k = 0; k < value.length; k++) {
480+
const val = String(value[k]);
481+
ret += `${key}\0${val}\0`;
480482
}
483+
count += value.length;
484+
continue;
481485
}
486+
ret += `${key}\0${value}\0`;
487+
count++;
482488
}
483489

484490
return [ret, count];

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.