From 70a8fb3763c92337bbc6a6138dd0c320134b847c Mon Sep 17 00:00:00 2001 From: Dmitriy Shalashov Date: Wed, 7 Jul 2010 18:43:39 +0200 Subject: [PATCH] Fix headers with empty value. --- lib/http.js | 4 +-- test/simple/test-http-blank-header.js | 47 +++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 test/simple/test-http-blank-header.js 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); +});