Skip to content

Commit c7f471a

Browse files
jasnelltargos
authored andcommitted
http2: improve http2 code a bit
Multiple general improvements to http2 internals for readability and efficiency 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 57a2b95 commit c7f471a

File tree

5 files changed

+212
-194
lines changed

5 files changed

+212
-194
lines changed

benchmark/http2/headers.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ function main({ n, nheaders }) {
3939

4040
function doRequest(remaining) {
4141
const req = client.request(headersObject);
42-
req.end();
43-
req.on('data', () => {});
42+
req.resume();
4443
req.on('end', () => {
4544
if (remaining > 0) {
4645
doRequest(remaining - 1);

benchmark/http2/respond-with-fd.js

+3-3
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'] });
1515

benchmark/http2/simple.js

+3-3
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'] });
1414

lib/internal/http2/util.js

+25-19
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)