From 14c9165d6fcc9ee66f2b44cd2e9e30db3bcb3d3d Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Thu, 29 May 2025 10:31:26 -0800 Subject: [PATCH] fix test-net-socket-local-address.js (#20010) --- .../parallel/test-net-socket-local-address.js | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 test/js/node/test/parallel/test-net-socket-local-address.js diff --git a/test/js/node/test/parallel/test-net-socket-local-address.js b/test/js/node/test/parallel/test-net-socket-local-address.js new file mode 100644 index 0000000000..58645322f4 --- /dev/null +++ b/test/js/node/test/parallel/test-net-socket-local-address.js @@ -0,0 +1,41 @@ +'use strict'; +const common = require('../common'); +// Skip test in FreeBSD jails +if (common.inFreeBSDJail) + common.skip('In a FreeBSD jail'); + +const assert = require('assert'); +const net = require('net'); + +let conns = 0; +const clientLocalPorts = []; +const serverRemotePorts = []; +const client = new net.Socket(); +const server = net.createServer((socket) => { + serverRemotePorts.push(socket.remotePort); + socket.end(); +}); + +server.on('close', common.mustCall(() => { + // Client and server should agree on the ports used + assert.deepStrictEqual(serverRemotePorts, clientLocalPorts); + assert.strictEqual(conns, 2); +})); + +server.listen(0, common.localhostIPv4, connect); + +function connect() { + if (conns === 2) { + server.close(); + return; + } + + conns++; + client.once('close', connect); + assert.strictEqual( + client, + client.connect(server.address().port, common.localhostIPv4, () => { + clientLocalPorts.push(client.localPort); + }) + ); +}