diff --git a/test/js/node/test/parallel/test-https-close.js b/test/js/node/test/parallel/test-https-close.js new file mode 100644 index 0000000000..93a8f02f55 --- /dev/null +++ b/test/js/node/test/parallel/test-https-close.js @@ -0,0 +1,54 @@ +'use strict'; +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); + +const fixtures = require('../common/fixtures'); +const https = require('https'); + +const options = { + key: fixtures.readKey('agent1-key.pem'), + cert: fixtures.readKey('agent1-cert.pem') +}; + +const connections = {}; + +const server = https.createServer(options, (req, res) => { + const interval = setInterval(() => { + res.write('data'); + }, 1000); + interval.unref(); +}); + +server.on('connection', (connection) => { + const key = `${connection.remoteAddress}:${connection.remotePort}`; + connection.on('close', () => { + delete connections[key]; + }); + connections[key] = connection; +}); + +function shutdown() { + server.close(common.mustSucceed()); + + for (const key in connections) { + connections[key].destroy(); + delete connections[key]; + } +} + +server.listen(0, () => { + const requestOptions = { + hostname: '127.0.0.1', + port: server.address().port, + path: '/', + method: 'GET', + rejectUnauthorized: false + }; + + const req = https.request(requestOptions, (res) => { + res.on('data', () => {}); + setImmediate(shutdown); + }); + req.end(); +}); \ No newline at end of file