1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4const fork = require('child_process').fork; 5const net = require('net'); 6 7if (process.argv[2] === 'child') { 8 9 process.on('message', (msg, socket) => { 10 socket.end('goodbye'); 11 }); 12 13 process.send('hello'); 14 15} else { 16 17 const child = fork(process.argv[1], ['child']); 18 19 const runTest = common.mustCall(() => { 20 21 const server = net.createServer(); 22 23 // server.connections should start as 0 24 assert.strictEqual(server.connections, 0); 25 server.on('connection', (socket) => { 26 child.send({ what: 'socket' }, socket); 27 }); 28 server.on('close', () => { 29 child.kill(); 30 }); 31 32 server.listen(0, common.mustCall(() => { 33 const connect = net.connect(server.address().port); 34 35 connect.on('close', common.mustCall(() => { 36 // `server.connections` should now be null. 37 assert.strictEqual(server.connections, null); 38 server.close(); 39 })); 40 41 connect.resume(); 42 })); 43 }); 44 45 child.on('message', runTest); 46} 47