mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
Fix test-http-client-race bug
This commit is contained in:
@@ -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]);
|
||||
}
|
||||
@@ -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();
|
||||
};
|
||||
|
||||
|
||||
@@ -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);
|
||||
@@ -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 () {
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user