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

Commit

Permalink
Fix test-http-client-race bug
Browse files Browse the repository at this point in the history
  • Loading branch information
ry committed Jun 16, 2009
1 parent 194eeac commit d77f757
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
9 changes: 7 additions & 2 deletions src/http.js
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,12 @@ node.http.Client = function (port, host) {
connection.connect(port, host);
return;
}
while (this === requests[0] && output.length > 0) {
//node.debug("HTTP CLIENT flush. readyState = " + connection.readyState);
while ( this === requests[0]
&& output.length > 0
&& connection.readyState == "open"
)
{
var out = output.shift();
connection.send(out[0], out[1]);
}
Expand All @@ -403,7 +408,7 @@ node.http.Client = function (port, host) {

connection.onConnect = function () {
//node.debug("HTTP CLIENT onConnect. readyState = " + connection.readyState);
//node.debug("requests[0].uri = " + requests[0].uri);
//node.debug("requests[0].uri = '" + requests[0].uri + "'");
requests[0].flush();
};

Expand Down
13 changes: 8 additions & 5 deletions test/test-http-client-race.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ PORT = 8888;

var server = new node.http.Server(function (req, res) {
res.sendHeader(200, [["content-type", "text/plain"]]);
res.sendBody("hello world\n");
if (req.uri.path == "/1")
res.sendBody("hello world 1\n");
else
res.sendBody("hello world 2\n");
res.finish();
})
server.listen(PORT);
Expand All @@ -13,13 +16,13 @@ var client = new node.http.Client(PORT);
var body1 = "";
var body2 = "";

client.get("/").finish(function (res1) {
client.get("/1").finish(function (res1) {
res1.setBodyEncoding("utf8");

res1.onBody = function (chunk) { body1 += chunk; };

res1.onBodyComplete = function () {
client.get("/").finish(function (res2) {
client.get("/2").finish(function (res2) {
res2.setBodyEncoding("utf8");
res2.onBody = function (chunk) { body2 += chunk; };
res2.onBodyComplete = function () {
Expand All @@ -30,6 +33,6 @@ client.get("/").finish(function (res1) {
});

function onExit () {
assertEqual("hello world\n", body1);
assertEqual("hello world\n", body2);
assertEquals("hello world 1\n", body1);
assertEquals("hello world 2\n", body2);
}

0 comments on commit d77f757

Please sign in to comment.