Don't encourage strange ideas about req race conditions
authorRyan Dahl <ry@tinyclouds.org>
Sun, 20 Jun 2010 18:54:51 +0000 (11:54 -0700)
committerRyan Dahl <ry@tinyclouds.org>
Sun, 20 Jun 2010 18:56:48 +0000 (11:56 -0700)
doc/api.markdown
test/pummel/test-http-client-reconnect-bug.js
test/simple/test-http-client-race-2.js
test/simple/test-http-client-race.js
test/simple/test-http-client-upload.js
test/simple/test-http-exceptions.js
test/simple/test-http-head-request.js
test/simple/test-http-proxy.js
test/simple/test-http.js

index 952c40438d32163438f78574f4893ee0dd82bbac..9a4fd02bd5dbeb9a92eb79fe8aeb6850d609157f 100644 (file)
@@ -1866,6 +1866,7 @@ Example of connecting to `google.com`:
     var google = http.createClient(80, 'www.google.com');
     var request = google.request('GET', '/',
       {'host': 'www.google.com'});
+    request.end();
     request.addListener('response', function (response) {
       sys.puts('STATUS: ' + response.statusCode);
       sys.puts('HEADERS: ' + JSON.stringify(response.headers));
@@ -1874,7 +1875,6 @@ Example of connecting to `google.com`:
         sys.puts('BODY: ' + chunk);
       });
     });
-    request.end();
 
 
 ### http.createClient(port, host, secure, credentials)
index 2e963bb45a6af0c200f81d53d41e0a63d525c605..a36a73fd791411c50c12d676855b491d5dc15256 100644 (file)
@@ -25,10 +25,10 @@ client.addListener("end", function() {
 });
 
 var request = client.request("GET", "/", {"host": "localhost"});
+request.end();
 request.addListener('response', function(response) {
   sys.puts("STATUS: " + response.statusCode);
 });
-request.end();
 
 setTimeout(function () {
   server.close();
index ba7a28bc1c952973340402f22da61acc9315d365..4f8604e4c8611890808242325706f66d5b6cc4c4 100644 (file)
@@ -38,6 +38,7 @@ var body3 = "";
 // Client #1 is assigned Parser #1
 //
 var req1 = client.request("/1")
+req1.end();
 req1.addListener('response', function (res1) {
   res1.setBodyEncoding("utf8");
 
@@ -63,6 +64,7 @@ req1.addListener('response', function (res1) {
       // internal state of the parser was no longer valid for use by Client #1.
       //
       var req2 = client.request("/2");
+      req2.end();
       req2.addListener('response', function (res2) {
         res2.setBodyEncoding("utf8");
         res2.addListener('data', function (chunk) { body2 += chunk; });
@@ -73,19 +75,17 @@ req1.addListener('response', function (res1) {
           // request using client2.
           //
           var req3 = client2.request("/3");
+          req3.end();
           req3.addListener('response', function (res3) {
             res3.setBodyEncoding("utf8");
             res3.addListener('data', function (chunk) { body3 += chunk });
             res3.addListener('end', function() { server.close(); });
           });
-          req3.end();
         });
       });
-      req2.end();
     }, 500);
   });
 });
-req1.end();
 
 process.addListener("exit", function () {
   assert.equal(body1_s, body1);
index e66964885c85f4db4237b0caa9ccfa485fb28ac3..016feae570ca2e3b91d489c1ec4e4736f477cd79 100644 (file)
@@ -20,6 +20,7 @@ var body1 = "";
 var body2 = "";
 
 var req1 = client.request("/1")
+req1.end();
 req1.addListener('response', function (res1) {
   res1.setBodyEncoding("utf8");
 
@@ -29,15 +30,14 @@ req1.addListener('response', function (res1) {
 
   res1.addListener('end', function () {
     var req2 = client.request("/2");
+    req2.end();
     req2.addListener('response', function (res2) {
       res2.setBodyEncoding("utf8");
       res2.addListener('data', function (chunk) { body2 += chunk; });
       res2.addListener('end', function () { server.close(); });
     });
-    req2.end();
   });
 });
-req1.end();
 
 process.addListener("exit", function () {
   assert.equal(body1_s, body1);
index bdc1f2d6744e68fbd2d2773b619ab588bafce174..82fd890739e1bbe5f2a0a4cb43fb1fea1d19b23a 100644 (file)
@@ -26,7 +26,6 @@ server.listen(PORT);
 
 var client = http.createClient(PORT);
 var req = client.request('POST', '/');
-
 req.write('1\n');
 req.write('2\n');
 req.write('3\n');
index 042eedfbf35efed95bea60de553500ab3c4206be..b373f8fc9ba6327c07dc86682630b580072a4d89 100644 (file)
@@ -28,6 +28,7 @@ function check_reqs() {
 
 function add_client(num) {
   var req = http.createClient(PORT).request('GET', '/busy/' + num);
+  req.end();
 
   req.addListener('response', function(res) {
     var response_body = "";
@@ -41,7 +42,6 @@ function add_client(num) {
       check_reqs();
     });
   });
-  req.end();
 
   return req;
 }
index f1f92a92c72206adfb746ff06fc61791bc48efda..befc8a2076b2235f26b9a34fae2e4ff3c9e50f98 100644 (file)
@@ -19,6 +19,7 @@ var gotEnd = false;
 server.listen(PORT, function () {
   var client = http.createClient(PORT);
   var request = client.request("HEAD", "/");
+  request.end();
   request.addListener('response', function (response) {
     error('response start');
     response.addListener("end", function () {
@@ -26,7 +27,6 @@ server.listen(PORT, function () {
       gotEnd = true;
     });
   });
-  request.end();
 });
 
 process.addListener('exit', function () {
index 00ee3aff64d17f4332d49b656cc5bedc9fb88635..05f0c6050f00eda74791bec858a364342e5f9698 100644 (file)
@@ -16,6 +16,7 @@ var proxy_client = http.createClient(BACKEND_PORT);
 var proxy = http.createServer(function (req, res) {
   debug("proxy req headers: " + JSON.stringify(req.headers));
   var proxy_req = proxy_client.request(url.parse(req.url).pathname);
+  proxy_req.end();
   proxy_req.addListener('response', function(proxy_res) {
     res.writeHead(proxy_res.statusCode, proxy_res.headers);
     proxy_res.addListener("data", function(chunk) {
@@ -26,7 +27,6 @@ var proxy = http.createServer(function (req, res) {
       debug("proxy res");
     });
   });
-  proxy_req.end();
 });
 
 var body = "";
index 8aab058f40cda7165ee43f3bf2005cb755d74cc0..f424a2d112c0d6d0c79073abae9e1babe85aaef1 100644 (file)
@@ -53,6 +53,7 @@ req.addListener('response', function (res) {
 
 setTimeout(function () {
   req = client.request("POST", "/world");
+  req.end();
   req.addListener('response',function (res) {
     assert.equal(200, res.statusCode);
     responses_recvd += 1;
@@ -60,7 +61,6 @@ setTimeout(function () {
     res.addListener('data', function (chunk) { body1 += chunk; });
     debug("Got /world response");
   });
-  req.end();
 }, 1);
 
 process.addListener("exit", function () {