Browse Source

Fix headers with empty value.

v0.7.4-release
Dmitriy Shalashov 15 years ago
committed by Ryan Dahl
parent
commit
70a8fb3763
  1. 4
      lib/http.js
  2. 47
      test/simple/test-http-blank-header.js

4
lib/http.js

@ -37,7 +37,7 @@ var parsers = new FreeList('parsers', 1000, function () {
parser.onHeaderField = function (b, start, len) { parser.onHeaderField = function (b, start, len) {
var slice = b.toString('ascii', start, start+len).toLowerCase(); var slice = b.toString('ascii', start, start+len).toLowerCase();
if (parser.value) { if (parser.value != undefined) {
parser.incoming._addHeaderLine(parser.field, parser.value); parser.incoming._addHeaderLine(parser.field, parser.value);
parser.field = null; parser.field = null;
parser.value = null; parser.value = null;
@ -59,7 +59,7 @@ var parsers = new FreeList('parsers', 1000, function () {
}; };
parser.onHeadersComplete = function (info) { parser.onHeadersComplete = function (info) {
if (parser.field && parser.value) { if (parser.field && (parser.value != undefined)) {
parser.incoming._addHeaderLine(parser.field, parser.value); parser.incoming._addHeaderLine(parser.field, parser.value);
} }

47
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);
});
Loading…
Cancel
Save