diff options
author | OneNail <onenail@yeah.net> | 2022-05-02 20:48:13 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-02 20:48:13 +0300 |
commit | 916a13a8a36debd9c9ce393bf1edd543ee75d449 (patch) | |
tree | 23841cac9d8b44f0e48d34e3b39295068384b680 /lib/internal | |
parent | acffd3d9e657c7013f32665a118772dc1576dfab (diff) |
http2: compat support for array headers
PR-URL: https://github.com/nodejs/node/pull/42901
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Ricky Zhou <0x19951125@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Diffstat (limited to 'lib/internal')
-rw-r--r-- | lib/internal/http2/compat.js | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/internal/http2/compat.js b/lib/internal/http2/compat.js index 596167990cd..0bda29233d5 100644 --- a/lib/internal/http2/compat.js +++ b/lib/internal/http2/compat.js @@ -682,9 +682,19 @@ class Http2ServerResponse extends Stream { let i; if (ArrayIsArray(headers)) { - for (i = 0; i < headers.length; i++) { - const header = headers[i]; - this[kSetHeader](header[0], header[1]); + if (headers.length && ArrayIsArray(headers[0])) { + for (i = 0; i < headers.length; i++) { + const header = headers[i]; + this[kSetHeader](header[0], header[1]); + } + } else { + if (headers.length % 2 !== 0) { + throw new ERR_INVALID_ARG_VALUE('headers', headers); + } + + for (i = 0; i < headers.length; i += 2) { + this[kSetHeader](headers[i], headers[i + 1]); + } } } else if (typeof headers === 'object') { const keys = ObjectKeys(headers); |