Skip to content

Commit

Permalink
net: check for close on stream, not parent
Browse files Browse the repository at this point in the history
'close' event isn't emitted on a TLS connection if it's been written to
(but 'end' and 'finish' events are).

PR-URL: nodejs#25026
Fixes: nodejs#24984
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
  • Loading branch information
davedoesdev authored and lpinca committed Dec 26, 2018
1 parent ae73b73 commit 86e2ec4
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/net.js
Original file line number Diff line number Diff line change
Expand Up @@ -368,8 +368,8 @@ Socket.prototype._final = function(cb) {
};


function afterShutdown(status, handle) {
var self = handle[owner_symbol];
function afterShutdown(status) {
var self = this.handle[owner_symbol];

debug('afterShutdown destroyed=%j', self.destroyed,
self._readableState);
Expand Down
41 changes: 41 additions & 0 deletions test/parallel/test-tls-close-event-after-write.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
'use strict';
const common = require('../common');

if (!common.hasCrypto)
common.skip('missing crypto');

// Issue #24984
// 'close' event isn't emitted on a TLS connection if it's been written to
// (but 'end' and 'finish' events are). Without a fix, this test won't exit.

const tls = require('tls');
const fixtures = require('../common/fixtures');
let cconn = null;
let sconn = null;

function test() {
if (cconn && sconn) {
cconn.resume();
sconn.resume();
sconn.end(Buffer.alloc(1024 * 1024));
cconn.end();
}
}

const server = tls.createServer({
key: fixtures.readKey('agent1-key.pem'),
cert: fixtures.readKey('agent1-cert.pem')
}, function(c) {
c.on('close', function() {
server.close();
});
sconn = c;
test();
}).listen(0, common.mustCall(function() {
tls.connect(this.address().port, {
rejectUnauthorized: false
}, common.mustCall(function() {
cconn = this;
test();
}));
}));

0 comments on commit 86e2ec4

Please sign in to comment.