diff options
author | David Halls <dahalls@gmail.com> | 2018-12-13 23:47:32 +0000 |
---|---|---|
committer | Luigi Pinca <luigipinca@gmail.com> | 2018-12-26 08:06:32 +0100 |
commit | 86e2ec41af072248b88629df3dccbd4d557fab20 (patch) | |
tree | 80e6cc03a70fc54f6fa1e4116cb28c1c28ce8d39 /test | |
parent | ae73b73eeb99101188c860cce488ccc085b2f268 (diff) | |
download | android-node-v8-86e2ec41af072248b88629df3dccbd4d557fab20.tar.gz android-node-v8-86e2ec41af072248b88629df3dccbd4d557fab20.tar.bz2 android-node-v8-86e2ec41af072248b88629df3dccbd4d557fab20.zip |
net: check for close on stream, not parent
'close' event isn't emitted on a TLS connection if it's been written to
(but 'end' and 'finish' events are).
PR-URL: https://github.com/nodejs/node/pull/25026
Fixes: https://github.com/nodejs/node/issues/24984
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-tls-close-event-after-write.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/parallel/test-tls-close-event-after-write.js b/test/parallel/test-tls-close-event-after-write.js new file mode 100644 index 0000000000..31ebc897b1 --- /dev/null +++ b/test/parallel/test-tls-close-event-after-write.js @@ -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(); + })); +})); |