From 4759921323463c992e11c79d73fd8d9f7e32a790 Mon Sep 17 00:00:00 2001 From: Marco Ippolito Date: Wed, 11 Jan 2023 14:56:41 +0100 Subject: [PATCH 1/2] http: writeHead if statusmessage is undefined dont override headers --- lib/_http_server.js | 4 +++- test/parallel/test-http-write-head-2.js | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/_http_server.js b/lib/_http_server.js index 62a26cdbaccd71..4370bf8d24eead 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -352,7 +352,9 @@ function writeHead(statusCode, reason, obj) { // writeHead(statusCode[, headers]) if (!this.statusMessage) this.statusMessage = STATUS_CODES[statusCode] || 'unknown'; - obj = reason; + if (!obj) { + obj = reason; + } } this.statusCode = statusCode; diff --git a/test/parallel/test-http-write-head-2.js b/test/parallel/test-http-write-head-2.js index a47d0d72e3be56..d64b8259f01215 100644 --- a/test/parallel/test-http-write-head-2.js +++ b/test/parallel/test-http-write-head-2.js @@ -59,3 +59,21 @@ const http = require('http'); })); })); } + +{ + const server = http.createServer(common.mustCall((req, res) => { + res.writeHead(200, undefined, [ 'foo', 'bar' ]); + res.end(); + })); + + server.listen(0, common.mustCall(() => { + http.get({ port: server.address().port }, common.mustCall((res) => { + assert.strictEqual(res.statusMessage, 'OK'); + assert.strictEqual(res.statusCode, 200); + assert.strictEqual(res.headers.foo, 'bar'); + res.resume().on('end', common.mustCall(() => { + server.close(); + })); + })); + })); +} From beb89afe03baf54d4e49f5e16db9ae79b06253d2 Mon Sep 17 00:00:00 2001 From: Marco Ippolito Date: Wed, 11 Jan 2023 17:47:56 +0100 Subject: [PATCH 2/2] http: nit --- lib/_http_server.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/_http_server.js b/lib/_http_server.js index 4370bf8d24eead..13add348d317e9 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -352,9 +352,7 @@ function writeHead(statusCode, reason, obj) { // writeHead(statusCode[, headers]) if (!this.statusMessage) this.statusMessage = STATUS_CODES[statusCode] || 'unknown'; - if (!obj) { - obj = reason; - } + obj ??= reason; } this.statusCode = statusCode;