From 953293e9e40f3c21bf4e70de2e1f9821d445ef13 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Fri, 30 Oct 2026 05:21:56 -0500 Subject: [PATCH] Close the socket corpus program's connection without a reset evolving-let-socket-optional-reads.cjs ended the server's side of the connection as soon as it was accepted and closed the server while the client was still ending its own side. On macOS the client could then read ECONNRESET, under Node and the compiled program alike, and each reports the unhandled 'error' event in its own form. The server now ends its side once the client's end arrives, and the server closes when the client socket has closed. The program's output is unchanged. --- tests/corpus/evolving-let-socket-optional-reads.cjs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/corpus/evolving-let-socket-optional-reads.cjs b/tests/corpus/evolving-let-socket-optional-reads.cjs index 959191850..ad4170ea8 100644 --- a/tests/corpus/evolving-let-socket-optional-reads.cjs +++ b/tests/corpus/evolving-let-socket-optional-reads.cjs @@ -3,7 +3,12 @@ // its first write: undefined short-circuits, the socket answers. const net = require('net'); let c; -const server = net.createServer((s) => s.end()); +// The server ends its side after the client's, and the server closes once +// the client socket has closed, so neither side sees a reset. +const server = net.createServer((s) => { + s.resume(); + s.on('end', () => s.end()); +}); function report(label) { console.log(label, c?.remoteAddress, c?.address()?.family, c?.remotePort > 0); } @@ -14,7 +19,8 @@ server.listen(0, '127.0.0.1', () => { c = net.connect(server.address().port, '127.0.0.1', () => { report('after'); console.log('inside', c?.remoteAddress, c?.address()?.family); + c.resume(); + c.on('close', () => server.close()); c.end(); - server.close(); }); });