Skip to content
This repository was archived by the owner on Apr 22, 2023. It is now read-only.

Commit 02750ca

Browse files
sleavittroot
authored and
root
committed
Ensure proper parsing of HTTP headers to avoid problem with a header having an empty value.
1 parent 3d948d8 commit 02750ca

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

lib/http.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ var parsers = new FreeList('parsers', 1000, function () {
2222
parser.incoming = new IncomingMessage(parser.socket);
2323
parser.field = null;
2424
parser.value = null;
25+
parser.fieldFound = false;
2526
};
2627

2728
// Only servers will get URL events.
@@ -37,10 +38,11 @@ var parsers = new FreeList('parsers', 1000, function () {
3738

3839
parser.onHeaderField = function (b, start, len) {
3940
var slice = b.toString('ascii', start, start+len).toLowerCase();
40-
if (parser.value) {
41+
if (parser.fieldFound) {
4142
parser.incoming._addHeaderLine(parser.field, parser.value);
4243
parser.field = null;
4344
parser.value = null;
45+
parser.fieldFound = false;
4446
}
4547
if (parser.field) {
4648
parser.field += slice;
@@ -51,6 +53,7 @@ var parsers = new FreeList('parsers', 1000, function () {
5153

5254
parser.onHeaderValue = function (b, start, len) {
5355
var slice = b.toString('ascii', start, start+len);
56+
parser.fieldFound = true;
5457
if (parser.value) {
5558
parser.value += slice;
5659
} else {
@@ -59,7 +62,7 @@ var parsers = new FreeList('parsers', 1000, function () {
5962
};
6063

6164
parser.onHeadersComplete = function (info) {
62-
if (parser.field && parser.value) {
65+
if (parser.fieldFound) {
6366
parser.incoming._addHeaderLine(parser.field, parser.value);
6467
}
6568

0 commit comments

Comments
 (0)