In addition to 'aborted' emit 'close' from incoming requests
authorFelix Geisendörfer <felix@debuggable.com>
Sun, 20 Feb 2011 12:31:37 +0000 (13:31 +0100)
committerRyan Dahl <ry@tinyclouds.org>
Thu, 24 Feb 2011 20:41:51 +0000 (12:41 -0800)
Closes GH-160.

lib/http.js
test/simple/test-http-response-close.js [new file with mode: 0644]

index 8313c8c..5e86a33 100644 (file)
@@ -952,6 +952,7 @@ function connectionListener(socket) {
     while (incoming.length) {
       var req = incoming.shift();
       req.emit('aborted');
+      req.emit('close');
     }
     // abort socket._httpMessage ?
   }
diff --git a/test/simple/test-http-response-close.js b/test/simple/test-http-response-close.js
new file mode 100644 (file)
index 0000000..7a1b76e
--- /dev/null
@@ -0,0 +1,34 @@
+var common = require('../common');
+var assert = require('assert');
+var http = require('http');
+
+var gotEnd = false;
+
+var server = http.createServer(function(req, res) {
+  res.writeHead(200);
+  res.write('a');
+
+  req.on('close', function() {
+    console.error("aborted");
+    gotEnd = true;
+  });
+});
+server.listen(common.PORT);
+
+server.addListener('listening', function() {
+  console.error("make req");
+  http.get({
+    port: common.PORT
+  }, function(res) {
+    console.error("got res");
+    res.on('data', function(data) {
+      console.error("destroy res");
+      res.destroy();
+      server.close();
+    });
+  });
+});
+
+process.on('exit', function() {
+  assert.ok(gotEnd);
+});