diff --git a/lib/http.js b/lib/http.js index e3ebf75a8b..1f3537b651 100644 --- a/lib/http.js +++ b/lib/http.js @@ -37,7 +37,7 @@ var parsers = new FreeList('parsers', 1000, function () { parser.onHeaderField = function (b, start, len) { var slice = b.toString('ascii', start, start+len).toLowerCase(); - if (parser.value) { + if (parser.value != undefined) { parser.incoming._addHeaderLine(parser.field, parser.value); parser.field = null; parser.value = null; @@ -59,7 +59,7 @@ var parsers = new FreeList('parsers', 1000, function () { }; parser.onHeadersComplete = function (info) { - if (parser.field && parser.value) { + if (parser.field && (parser.value != undefined)) { parser.incoming._addHeaderLine(parser.field, parser.value); } diff --git a/test/simple/test-http-blank-header.js b/test/simple/test-http-blank-header.js new file mode 100644 index 0000000000..1948deca38 --- /dev/null +++ b/test/simple/test-http-blank-header.js @@ -0,0 +1,47 @@ +require('../common'); + +http = require('http'); +net = require('net'); + +gotReq = false; + +server = http.createServer(function (req, res) { + error('got req'); + gotReq = true; + assert.equal('GET', req.method); + assert.equal('/blah', req.url); + assert.deepEqual({ + host: "mapdevel.trolologames.ru:443", + origin: "http://mapdevel.trolologames.ru", + cookie: "", + }, req.headers); +}); + + +server.listen(PORT, function () { + var c = net.createConnection(PORT); + + c.addListener('connect', function () { + error('client wrote message'); + c.write( "GET /blah HTTP/1.1\r\n" + + "Host: mapdevel.trolologames.ru:443\r\n" + + "Cookie:\r\n" + + "Origin: http://mapdevel.trolologames.ru\r\n" + + "\r\n\r\nhello world" + ); + }); + + c.addListener('end', function () { + c.end(); + }); + + c.addListener('close', function () { + error('client close'); + server.close(); + }); +}); + + +process.addListener('exit', function () { + assert.ok(gotReq); +});