http: lazy allocate cookies array

PR-URL: https://github.com/nodejs/node/pull/59734
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Tim Perry <pimterry@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
Robert Nagy 2025-10-27 15:01:06 +01:00 committed by GitHub
parent f7ca0ae765
commit 1f2c9f82b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -673,20 +673,22 @@ OutgoingMessage.prototype.setHeaders = function setHeaders(headers) {
// We also cannot safely split by comma.
// To avoid setHeader overwriting the previous value we push
// set-cookie values in array and set them all at once.
const cookies = [];
let cookies = null;
for (const { 0: key, 1: value } of headers) {
if (key === 'set-cookie') {
if (ArrayIsArray(value)) {
cookies ??= [];
cookies.push(...value);
} else {
cookies ??= [];
cookies.push(value);
}
continue;
}
this.setHeader(key, value);
}
if (cookies.length) {
if (cookies != null) {
this.setHeader('set-cookie', cookies);
}