From 485823f3e44013c4c83fcbbabd3a234f680ebb3c Mon Sep 17 00:00:00 2001 From: Michaeljohn Clement Date: Wed, 2 Dec 2009 00:38:42 -0500 Subject: [PATCH] fixed HTTP duplicated header bug added test case for HTTP duplicated header bug on keepalive --- lib/http.js | 5 +++-- test/mjsunit/test-http-server.js | 21 ++++++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/http.js b/lib/http.js index 609a3bc..63af127 100644 --- a/lib/http.js +++ b/lib/http.js @@ -355,11 +355,12 @@ function createIncomingMessageStream (connection, incoming_listener) { stream.addListener("incoming", incoming_listener); - var incoming; - var field = null, value = null; + var incoming, field, value; connection.addListener("messageBegin", function () { incoming = new IncomingMessage(connection); + field = null; + value = null; }); // Only servers will get URI events. diff --git a/test/mjsunit/test-http-server.js b/test/mjsunit/test-http-server.js index 022aa56..39cb32c 100644 --- a/test/mjsunit/test-http-server.js +++ b/test/mjsunit/test-http-server.js @@ -23,6 +23,14 @@ http.createServer(function (req, res) { if (req.id == 1) { assertEquals("POST", req.method); assertEquals("/quit", req.uri.path); + } + + if (req.id == 2) { + assertEquals("foo", req.headers['x-x']); + } + + if (req.id == 3) { + assertEquals("bar", req.headers['x-x']); this.close(); //puts("server closed"); } @@ -49,10 +57,17 @@ c.addListener("receive", function (chunk) { if (requests_sent == 1) { c.send("POST /quit HTTP/1.1\r\n\r\n"); + requests_sent += 1; + } + + if (requests_sent == 2) { + c.send("GET / HTTP/1.1\r\nX-X: foo\r\n\r\n" + +"GET / HTTP/1.1\r\nX-X: bar\r\n\r\n"); c.close(); assertEquals(c.readyState, "readOnly"); - requests_sent += 1; + requests_sent += 2; } + }); c.addListener("eof", function () { @@ -64,8 +79,8 @@ c.addListener("close", function () { }); process.addListener("exit", function () { - assertEquals(2, request_number); - assertEquals(2, requests_sent); + assertEquals(4, request_number); + assertEquals(4, requests_sent); var hello = new RegExp("/hello"); assertTrue(hello.exec(server_response) != null); -- 2.7.4