'use strict'; // Regression test for https://github.com/nodejs/node/issues/13435 // Tests that `socket.server` is correctly set when a socket is sent to a worker // and the `'connection'` event is emitted manually on an HTTP server. const common = require('../common'); const assert = require('assert'); const cluster = require('cluster'); const http = require('http'); const net = require('net'); if (cluster.isMaster) { const worker = cluster.fork(); const server = net.createServer(common.mustCall((socket) => { worker.send('socket', socket); })); worker.on('exit', common.mustCall((code) => { assert.strictEqual(code, 0); server.close(); })); server.listen(0, common.mustCall(() => { net.createConnection(server.address().port); })); } else { const server = http.createServer(); server.on('connection', common.mustCall((socket) => { assert.strictEqual(socket.server, server); socket.destroy(); cluster.worker.disconnect(); })); process.on('message', common.mustCall((message, socket) => { server.emit('connection', socket); })); }