Skip to content

http2: reject non-latin1 client request values #15655

http2: reject non-latin1 client request values

http2: reject non-latin1 client request values #15655

Triggered via pull request November 11, 2026 09:55
Status Failure
Total duration 49m 15s
Artifacts 1

test-shared.yml

on: pull_request
Build slim tarball
57s
Build slim tarball
aarch64-linux: Cache V8 build
24s
aarch64-linux: Cache V8 build
Matrix: build
Matrix: build-openssl
Fit to window
Zoom out
Zoom in

Annotations

16 errors and 1 notice
aarch64-linux: with shared openssl-3.5.9 / build
Process completed with exit code 2.
aarch64-linux: with shared openssl-3.5.9 / build: test/parallel/test-http2-httpvalidation.js#L40
--- stderr --- node:assert:456 throw err; ^ AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + actual - expected + Comparison {} - Comparison { - code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' - } at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12) at Http2Server.emit (node:events:514:20) at emitListeningNT (node:net:2622:10) at process.processTicksAndRejections (node:internal/process/task_queues:89:21) { generatedMessage: true, code: 'ERR_ASSERTION', actual: TypeError: key.toLowerCase is not a function at processHeader (node:internal/http2/util:810:15) at buildNgHeaderString (node:internal/http2/util:884:7) at prepareRequestHeadersArray (node:internal/http2/util:718:23) at ClientHttp2Session.request (node:internal/http2/core:1930:11) at assert.throws.code (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:33) at getActual (node:assert:580:5) at assert.throws (node:assert:728:24) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12), expected: { code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' }, operator: 'throws', diff: 'simple' } Node.js v28.0.0-pre Command: out/Release/node /home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js
aarch64-darwin: with shared libraries / build
Process completed with exit code 2.
aarch64-darwin: with shared libraries / build: test/parallel/test-http2-httpvalidation.js#L40
--- stderr --- node:assert:456 throw err; ^ AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + actual - expected + Comparison {} - Comparison { - code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' - } at Http2Server.<anonymous> (/Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12) at Http2Server.emit (node:events:514:20) at emitListeningNT (node:net:2622:10) at process.processTicksAndRejections (node:internal/process/task_queues:89:21) { generatedMessage: true, code: 'ERR_ASSERTION', actual: TypeError: key.toLowerCase is not a function at processHeader (node:internal/http2/util:810:15) at buildNgHeaderString (node:internal/http2/util:884:7) at prepareRequestHeadersArray (node:internal/http2/util:718:23) at ClientHttp2Session.request (node:internal/http2/core:1930:11) at assert.throws.code (/Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:33) at getActual (node:assert:580:5) at assert.throws (node:assert:728:24) at Http2Server.<anonymous> (/Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12), expected: { code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' }, operator: 'throws', diff: 'simple' } Node.js v28.0.0-pre Command: out/Release/node /Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js
aarch64-linux: with shared boringssl-0.20261020.0 / build
Process completed with exit code 2.
aarch64-linux: with shared boringssl-0.20261020.0 / build: test/parallel/test-http2-httpvalidation.js#L40
--- stderr --- node:assert:456 throw err; ^ AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + actual - expected + Comparison {} - Comparison { - code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' - } at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12) at Http2Server.emit (node:events:514:20) at emitListeningNT (node:net:2622:10) at process.processTicksAndRejections (node:internal/process/task_queues:89:21) { generatedMessage: true, code: 'ERR_ASSERTION', actual: TypeError: key.toLowerCase is not a function at processHeader (node:internal/http2/util:810:15) at buildNgHeaderString (node:internal/http2/util:884:7) at prepareRequestHeadersArray (node:internal/http2/util:718:23) at ClientHttp2Session.request (node:internal/http2/core:1930:11) at assert.throws.code (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:33) at getActual (node:assert:580:5) at assert.throws (node:assert:728:24) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12), expected: { code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' }, operator: 'throws', diff: 'simple' } Node.js v28.0.0-pre Command: out/Release/node /home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js
aarch64-linux: with shared openssl-4.1.0 / build
Process completed with exit code 2.
aarch64-linux: with shared openssl-4.1.0 / build: test/parallel/test-http2-httpvalidation.js#L40
--- stderr --- node:assert:456 throw err; ^ AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + actual - expected + Comparison {} - Comparison { - code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' - } at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12) at Http2Server.emit (node:events:514:20) at emitListeningNT (node:net:2622:10) at process.processTicksAndRejections (node:internal/process/task_queues:89:21) { generatedMessage: true, code: 'ERR_ASSERTION', actual: TypeError: key.toLowerCase is not a function at processHeader (node:internal/http2/util:810:15) at buildNgHeaderString (node:internal/http2/util:884:7) at prepareRequestHeadersArray (node:internal/http2/util:718:23) at ClientHttp2Session.request (node:internal/http2/core:1930:11) at assert.throws.code (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:33) at getActual (node:assert:580:5) at assert.throws (node:assert:728:24) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12), expected: { code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' }, operator: 'throws', diff: 'simple' } Node.js v28.0.0-pre Command: out/Release/node /home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js
aarch64-linux: with shared openssl-3.0.22 / build
Process completed with exit code 2.
aarch64-linux: with shared openssl-3.0.22 / build: test/parallel/test-http2-httpvalidation.js#L40
--- stderr --- node:assert:456 throw err; ^ AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + actual - expected + Comparison {} - Comparison { - code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' - } at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12) at Http2Server.emit (node:events:514:20) at emitListeningNT (node:net:2622:10) at process.processTicksAndRejections (node:internal/process/task_queues:89:21) { generatedMessage: true, code: 'ERR_ASSERTION', actual: TypeError: key.toLowerCase is not a function at processHeader (node:internal/http2/util:810:15) at buildNgHeaderString (node:internal/http2/util:884:7) at prepareRequestHeadersArray (node:internal/http2/util:718:23) at ClientHttp2Session.request (node:internal/http2/core:1930:11) at assert.throws.code (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:33) at getActual (node:assert:580:5) at assert.throws (node:assert:728:24) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12), expected: { code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' }, operator: 'throws', diff: 'simple' } Node.js v28.0.0-pre Command: out/Release/node /home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js
x86_64-linux: with shared libraries and perfetto / build
Process completed with exit code 2.
x86_64-linux: with shared libraries and perfetto / build: test/parallel/test-http2-httpvalidation.js#L40
--- stderr --- node:assert:456 throw err; ^ AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + actual - expected + Comparison {} - Comparison { - code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' - } at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12) at Http2Server.emit (node:events:514:20) at emitListeningNT (node:net:2622:10) at process.processTicksAndRejections (node:internal/process/task_queues:89:21) { generatedMessage: true, code: 'ERR_ASSERTION', actual: TypeError: key.toLowerCase is not a function at processHeader (node:internal/http2/util:810:15) at buildNgHeaderString (node:internal/http2/util:884:7) at prepareRequestHeadersArray (node:internal/http2/util:718:23) at ClientHttp2Session.request (node:internal/http2/core:1930:11) at assert.throws.code (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:33) at getActual (node:assert:580:5) at assert.throws (node:assert:728:24) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12), expected: { code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' }, operator: 'throws', diff: 'simple' } Node.js v28.0.0-pre Command: out/Release/node /home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js
aarch64-linux: with shared openssl-fips-3.5.9 / build
Process completed with exit code 2.
aarch64-linux: with shared openssl-fips-3.5.9 / build: test/parallel/test-http2-httpvalidation.js#L40
--- stderr --- node:assert:456 throw err; ^ AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + actual - expected + Comparison {} - Comparison { - code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' - } at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12) at Http2Server.emit (node:events:514:20) at emitListeningNT (node:net:2622:10) at process.processTicksAndRejections (node:internal/process/task_queues:89:21) { generatedMessage: true, code: 'ERR_ASSERTION', actual: TypeError: key.toLowerCase is not a function at processHeader (node:internal/http2/util:810:15) at buildNgHeaderString (node:internal/http2/util:884:7) at prepareRequestHeadersArray (node:internal/http2/util:718:23) at ClientHttp2Session.request (node:internal/http2/core:1930:11) at assert.throws.code (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:33) at getActual (node:assert:580:5) at assert.throws (node:assert:728:24) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12), expected: { code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' }, operator: 'throws', diff: 'simple' } Node.js v28.0.0-pre Command: out/Release/node /home/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js
x86_64-darwin: with shared libraries / build
Process completed with exit code 2.
x86_64-darwin: with shared libraries / build: test/parallel/test-http2-httpvalidation.js#L40
--- stderr --- node:assert:456 throw err; ^ AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + actual - expected + Comparison {} - Comparison { - code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' - } at Http2Server.<anonymous> (/Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12) at Http2Server.emit (node:events:514:20) at emitListeningNT (node:net:2622:10) at process.processTicksAndRejections (node:internal/process/task_queues:89:21) { generatedMessage: true, code: 'ERR_ASSERTION', actual: TypeError: key.toLowerCase is not a function at processHeader (node:internal/http2/util:810:15) at buildNgHeaderString (node:internal/http2/util:884:7) at prepareRequestHeadersArray (node:internal/http2/util:718:23) at ClientHttp2Session.request (node:internal/http2/core:1930:11) at assert.throws.code (/Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:33) at getActual (node:assert:580:5) at assert.throws (node:assert:728:24) at Http2Server.<anonymous> (/Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js:40:12) at Http2Server.<anonymous> (/Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/common/index.js:512:15) at Http2Server.wrapper (node:events:639:12), expected: { code: 'ERR_HTTP2_HEADER_SINGLE_VALUE' }, operator: 'throws', diff: 'simple' } Node.js v28.0.0-pre Command: out/Release/node /Users/runner/work/_temp/node-v28.0.0-nightly2026-11-11f6e325bcc6-slim/test/parallel/test-http2-httpvalidation.js
aarch64-darwin: with shared libraries / build
Due to capacity constraints, jobs targeting macOS arm64 runners may experience longer queue times.

Artifacts

Produced during runtime
Name Size Digest
node-v28.0.0-nightly2026-11-11f6e325bcc6-slim.tar.gz
53.2 MB
sha256:708f72718a38074c0d5280e8543f05b80b1dcb8a6ea465aeb365e8d6fc8a9547