From 571832b5bb4a078f393ac08a9668ea65f727541b Mon Sep 17 00:00:00 2001 From: Marcus Weiner Date: Thu, 26 Mar 2026 01:24:07 +0700 Subject: [PATCH] internal: improve formatting for network errors with IPv6 addresses and ports --- lib/internal/errors.js | 3 ++- .../test-net-autoselectfamily-commandline-option.js | 8 ++++---- test/parallel/test-net-autoselectfamily-default.js | 8 ++++---- test/parallel/test-net-autoselectfamily.js | 10 +++++----- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/lib/internal/errors.js b/lib/internal/errors.js index 7c4728627731fe..41f41236fb60c2 100644 --- a/lib/internal/errors.js +++ b/lib/internal/errors.js @@ -698,7 +698,8 @@ class UVExceptionWithHostPort extends Error { let details = ''; if (port && port > 0) { - details = ` ${address}:${port}`; + const host = address.includes(':') ? `[${address}]` : address; // RFC 5952 Section 6 + details = ` ${host}:${port}`; } else if (address) { details = ` ${address}`; } diff --git a/test/parallel/test-net-autoselectfamily-commandline-option.js b/test/parallel/test-net-autoselectfamily-commandline-option.js index 54627a1266edaf..18899d665bfcfe 100644 --- a/test/parallel/test-net-autoselectfamily-commandline-option.js +++ b/test/parallel/test-net-autoselectfamily-commandline-option.js @@ -32,14 +32,14 @@ const { createConnection, createServer } = require('net'); if (common.hasIPv6) { assert.strictEqual(error.code, 'ECONNREFUSED'); - assert.strictEqual(error.message, `connect ECONNREFUSED ::1:${port}`); + assert.strictEqual(error.message, `connect ECONNREFUSED [::1]:${port}`); } else if (error.code === 'EAFNOSUPPORT') { - assert.strictEqual(error.message, `connect EAFNOSUPPORT ::1:${port} - Local (undefined:undefined)`); + assert.strictEqual(error.message, `connect EAFNOSUPPORT [::1]:${port} - Local (undefined:undefined)`); } else if (error.code === 'EUNATCH') { - assert.strictEqual(error.message, `connect EUNATCH ::1:${port} - Local (:::0)`); + assert.strictEqual(error.message, `connect EUNATCH [::1]:${port} - Local ([::]:0)`); } else { assert.strictEqual(error.code, 'EADDRNOTAVAIL'); - assert.strictEqual(error.message, `connect EADDRNOTAVAIL ::1:${port} - Local (:::0)`); + assert.strictEqual(error.message, `connect EADDRNOTAVAIL [::1]:${port} - Local ([::]:0)`); } ipv4Server.close(); diff --git a/test/parallel/test-net-autoselectfamily-default.js b/test/parallel/test-net-autoselectfamily-default.js index 67977498c5a34c..3cb33712ee4628 100644 --- a/test/parallel/test-net-autoselectfamily-default.js +++ b/test/parallel/test-net-autoselectfamily-default.js @@ -67,14 +67,14 @@ const autoSelectFamilyAttemptTimeout = common.defaultAutoSelectFamilyAttemptTime connection.on('error', common.mustCall((error) => { if (common.hasIPv6) { assert.strictEqual(error.code, 'ECONNREFUSED'); - assert.strictEqual(error.message, `connect ECONNREFUSED ::1:${port}`); + assert.strictEqual(error.message, `connect ECONNREFUSED [::1]:${port}`); } else if (error.code === 'EAFNOSUPPORT') { - assert.strictEqual(error.message, `connect EAFNOSUPPORT ::1:${port} - Local (undefined:undefined)`); + assert.strictEqual(error.message, `connect EAFNOSUPPORT [::1]:${port} - Local (undefined:undefined)`); } else if (error.code === 'EUNATCH') { - assert.strictEqual(error.message, `connect EUNATCH ::1:${port} - Local (:::0)`); + assert.strictEqual(error.message, `connect EUNATCH [::1]:${port} - Local ([::]:0)`); } else { assert.strictEqual(error.code, 'EADDRNOTAVAIL'); - assert.strictEqual(error.message, `connect EADDRNOTAVAIL ::1:${port} - Local (:::0)`); + assert.strictEqual(error.message, `connect EADDRNOTAVAIL [::1]:${port} - Local ([::]:0)`); } ipv4Server.close(); diff --git a/test/parallel/test-net-autoselectfamily.js b/test/parallel/test-net-autoselectfamily.js index 0fdac23a6f6e9a..4aa88d0fdec5e7 100644 --- a/test/parallel/test-net-autoselectfamily.js +++ b/test/parallel/test-net-autoselectfamily.js @@ -177,7 +177,7 @@ if (common.hasIPv6) { assert.ok(errors.includes('connect ECONNREFUSED 127.0.0.1:10')); if (common.hasIPv6) { - assert.ok(errors.includes('connect ECONNREFUSED ::1:10')); + assert.ok(errors.includes('connect ECONNREFUSED [::1]:10')); } })); } @@ -207,14 +207,14 @@ if (common.hasIPv6) { if (common.hasIPv6) { assert.strictEqual(error.code, 'ECONNREFUSED'); - assert.strictEqual(error.message, `connect ECONNREFUSED ::1:${port}`); + assert.strictEqual(error.message, `connect ECONNREFUSED [::1]:${port}`); } else if (error.code === 'EAFNOSUPPORT') { - assert.strictEqual(error.message, `connect EAFNOSUPPORT ::1:${port} - Local (undefined:undefined)`); + assert.strictEqual(error.message, `connect EAFNOSUPPORT [::1]:${port} - Local (undefined:undefined)`); } else if (error.code === 'EUNATCH') { - assert.strictEqual(error.message, `connect EUNATCH ::1:${port} - Local (:::0)`); + assert.strictEqual(error.message, `connect EUNATCH [::1]:${port} - Local ([::]:0)`); } else { assert.strictEqual(error.code, 'EADDRNOTAVAIL'); - assert.strictEqual(error.message, `connect EADDRNOTAVAIL ::1:${port} - Local (:::0)`); + assert.strictEqual(error.message, `connect EADDRNOTAVAIL [::1]:${port} - Local ([::]:0)`); } ipv4Server.close();