'use strict'; const common = require('../common'); const fs = require('fs'); if (!common.hasCrypto) { common.skip('missing crypto'); return; } const https = require('https'); const options = { key: fs.readFileSync(common.fixturesDir + '/keys/agent1-key.pem'), cert: fs.readFileSync(common.fixturesDir + '/keys/agent1-cert.pem') }; const connections = {}; const server = https.createServer(options, function(req, res) { const interval = setInterval(function() { res.write('data'); }, 1000); interval.unref(); }); server.on('connection', function(connection) { const key = connection.remoteAddress + ':' + connection.remotePort; connection.on('close', function() { delete connections[key]; }); connections[key] = connection; }); function shutdown() { server.close(common.mustCall()); for (const key in connections) { connections[key].destroy(); delete connections[key]; } } server.listen(0, function() { const requestOptions = { hostname: '127.0.0.1', port: this.address().port, path: '/', method: 'GET', rejectUnauthorized: false }; const req = https.request(requestOptions, function(res) { res.on('data', common.noop); setImmediate(shutdown); }); req.end(); });