Permalink
Browse files

http: suppress data event if req aborted

Re-enable test-http-abort-stream-end and put it into parallel
category. Use system random port when calling server.listen()
and fix eslint errors.

After calling request.abort(), in order to avoid the buffered
data to trigger the 'data' event, explicitly remove 'data' event
listeners.

PR-URL: #13260
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
  • Loading branch information...
yhwang authored and mcollina committed May 28, 2017
1 parent fd54b10 commit 716e9e07fd9d936380553d512e8a8abe21caa4f9
Showing with 11 additions and 10 deletions.
  1. +3 −0 lib/_http_incoming.js
  2. +8 −10 test/{disabled → parallel}/test-http-abort-stream-end.js
View
@@ -314,6 +314,9 @@ function _addHeaderLine(field, value, dest) {
IncomingMessage.prototype._dump = function _dump() {
if (!this._dumped) {
this._dumped = true;
// If there is buffered data, it may trigger 'data' events.
// Remove 'data' event listeners explicitly.
this.removeAllListeners('data');
this.resume();
}
};
@@ -20,27 +20,27 @@
// USE OR OTHER DEALINGS IN THE SOFTWARE.
'use strict';
const common = require('../common');
require('../common');
const assert = require('assert');
const http = require('http');
var maxSize = 1024;
var size = 0;
const maxSize = 1024;
let size = 0;
var s = http.createServer(function(req, res) {
const s = http.createServer(function(req, res) {
this.close();
res.writeHead(200, {'Content-Type': 'text/plain'});
for (var i = 0; i < maxSize; i++) {
for (let i = 0; i < maxSize; i++) {
res.write('x' + i);
}
res.end();
});
var aborted = false;
s.listen(common.PORT, function() {
var req = http.get('http://localhost:' + common.PORT, function(res) {
let aborted = false;
s.listen(0, function() {
const req = http.get('http://localhost:' + s.address().port, function(res) {
res.on('data', function(chunk) {
size += chunk.length;
assert(!aborted, 'got data after abort');
@@ -51,8 +51,6 @@ s.listen(common.PORT, function() {
}
});
});
req.end();
});
process.on('exit', function() {

0 comments on commit 716e9e0

Please sign in to comment.