diff --git a/lib/http.js b/lib/http.js index 8313c8cc6481ee..5e86a33f0da668 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 00000000000000..7a1b76e2993cbf --- /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); +});