'use strict';

const common = require('../common');
if (!common.hasCrypto)
  common.skip('missing crypto');

const https = require('https');

if (process.argv[2] === 'localhost') {
  const request = https.get('https://localhost:' + process.argv[3]);

  request.on('socket', (socket) => {
    socket.unref();
  });
} else {
  const assert = require('assert');
  const net = require('net');
  const server = net.createServer();
  server.listen(0);
  server.on('listening', common.mustCall(() => {
    const port = server.address().port;
    const { fork } = require('child_process');
    const child = fork(__filename, ['localhost', port], {});
    child.on('close', common.mustCall((exit_code) => {
      server.close();
      assert.strictEqual(exit_code, 0);
    }));
  }));
}
