Skip to content

Commit 689d22a

Browse files
committed
http2: optimize neverIndex SafeSet creation
Only create SafeSet when sensitiveHeaders array is non-empty. This optimizes the common case where sensitiveHeaders is empty by avoiding Set creation overhead in the hot path. The optimization maintains correctness for all cases while providing significant performance improvement for the common case where sensitiveHeaders is not explicitly configured.
1 parent 534442f commit 689d22a

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

lib/internal/http2/util.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -761,7 +761,13 @@ function buildNgHeaderString(arrayOrMap,
761761

762762
const singles = new SafeSet();
763763
const sensitiveHeaders = arrayOrMap[kSensitiveHeaders] || emptyArray;
764-
const neverIndex = sensitiveHeaders.map((v) => v.toLowerCase());
764+
let neverIndex = null;
765+
if (sensitiveHeaders.length > 0) {
766+
neverIndex = new SafeSet();
767+
for (let i = 0; i < sensitiveHeaders.length; i++) {
768+
neverIndex.add(sensitiveHeaders[i].toLowerCase());
769+
}
770+
}
765771

766772
function processHeader(key, value) {
767773
key = key.toLowerCase();
@@ -787,7 +793,7 @@ function buildNgHeaderString(arrayOrMap,
787793
throw new ERR_HTTP2_HEADER_SINGLE_VALUE(key);
788794
singles.add(key);
789795
}
790-
const flags = neverIndex.includes(key) ?
796+
const flags = (neverIndex !== null && neverIndex.has(key)) ?
791797
kNeverIndexFlag :
792798
kNoHeaderFlags;
793799
if (key[0] === ':') {

0 commit comments

Comments
 (0)