diff --git a/lib/_http_server.js b/lib/_http_server.js index 99903024c26d14..6f1aad9e9eda0b 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -165,22 +165,16 @@ ServerResponse.prototype.writeHead = function(statusCode, reason, obj) { } this.statusCode = statusCode; - if (this._headers) { - // Slow-case: when progressive API and header fields are passed. - if (obj) { - var keys = Object.keys(obj); - for (var i = 0; i < keys.length; i++) { - var k = keys[i]; - if (k) this.setHeader(k, obj[k]); - } + if (obj) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var k = keys[i]; + if (k) this.setHeader(k, obj[k]); } - // only progressive api is used - headers = this._renderHeaders(); - } else { - // only writeHead() called - headers = obj; } + headers = this._renderHeaders(); + var statusLine = 'HTTP/1.1 ' + statusCode.toString() + ' ' + this.statusMessage + CRLF; diff --git a/test/parallel/test-http-mutable-headers.js b/test/parallel/test-http-mutable-headers.js index 296b1622a03394..758484aee6dd79 100644 --- a/test/parallel/test-http-mutable-headers.js +++ b/test/parallel/test-http-mutable-headers.js @@ -54,6 +54,10 @@ var s = http.createServer(function(req, res) { res.setHeader('x-foo', 'keyboard cat'); res.writeHead(200, { 'x-foo': 'bar', 'x-bar': 'baz' }); break; + + case 'writeHead2': + res.writeHead(200, { 'x-foo': 'bar', 'X-foo': 'bar', 'x-bar': 'baz' }); + break; } res.statusCode = 201; @@ -102,6 +106,13 @@ function nextTest() { break; case 'writeHead': + assert.equal(response.headers['x-foo'], 'bar'); + assert.equal(response.headers['x-bar'], 'baz'); + assert.equal(200, response.statusCode); + test = 'writeHead2'; + break; + + case 'writeHead2': assert.equal(response.headers['x-foo'], 'bar'); assert.equal(response.headers['x-bar'], 'baz'); assert.equal(200, response.statusCode); @@ -109,7 +120,7 @@ function nextTest() { break; default: - throw Error('?'); + throw new Error('?'); } response.setEncoding('utf8'); @@ -127,6 +138,6 @@ function nextTest() { process.on('exit', function() { - assert.equal(4, testsComplete); + assert.equal(5, testsComplete); });