1'use strict';
2const common = require('../common');
3if (!common.hasCrypto)
4  common.skip('missing crypto');
5
6const fixtures = require('../common/fixtures');
7const https = require('https');
8
9const options = {
10  key: fixtures.readKey('agent1-key.pem'),
11  cert: fixtures.readKey('agent1-cert.pem')
12};
13
14const connections = {};
15
16const server = https.createServer(options, (req, res) => {
17  const interval = setInterval(() => {
18    res.write('data');
19  }, 1000);
20  interval.unref();
21});
22
23server.on('connection', (connection) => {
24  const key = `${connection.remoteAddress}:${connection.remotePort}`;
25  connection.on('close', () => {
26    delete connections[key];
27  });
28  connections[key] = connection;
29});
30
31function shutdown() {
32  server.close(common.mustSucceed());
33
34  for (const key in connections) {
35    connections[key].destroy();
36    delete connections[key];
37  }
38}
39
40server.listen(0, () => {
41  const requestOptions = {
42    hostname: '127.0.0.1',
43    port: server.address().port,
44    path: '/',
45    method: 'GET',
46    rejectUnauthorized: false
47  };
48
49  const req = https.request(requestOptions, (res) => {
50    res.on('data', () => {});
51    setImmediate(shutdown);
52  });
53  req.end();
54});
55