summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Geisendörfer <felix@debuggable.com>2011-02-20 13:31:37 +0100
committerRyan Dahl <ry@tinyclouds.org>2011-02-24 12:41:51 -0800
commitf423ec90fc6cfa47baf48485240dd338d61e9307 (patch)
tree5f25ac5f94515a121e877b411e77a11f67c877a8
parent5287703cce59e2ee09c73a851bfdcd018a67926c (diff)
downloadnode-new-f423ec90fc6cfa47baf48485240dd338d61e9307.tar.gz
In addition to 'aborted' emit 'close' from incoming requests
Closes GH-160.
-rw-r--r--lib/http.js1
-rw-r--r--test/simple/test-http-response-close.js34
2 files changed, 35 insertions, 0 deletions
diff --git a/lib/http.js b/lib/http.js
index 8313c8cc64..5e86a33f0d 100644
--- a/lib/http.js
+++ b/lib/http.js
@@ -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
index 0000000000..7a1b76e299
--- /dev/null
+++ b/test/simple/test-http-response-close.js
@@ -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);
+});