Skip to content

Commit

Permalink
http: suppress data event if req aborted
Browse files Browse the repository at this point in the history
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 jasnell committed Jun 5, 2017
1 parent 243643e commit c7ebf6e
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 10 deletions.
3 changes: 3 additions & 0 deletions lib/_http_incoming.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -51,8 +51,6 @@ s.listen(common.PORT, function() {
}
});
});

req.end();
});

process.on('exit', function() {
Expand Down

0 comments on commit c7ebf6e

Please sign in to comment.