From b92a7a1efce7f71fd547575ee07f934ed7f657ca Mon Sep 17 00:00:00 2001 From: Xge <29895712+xgedev@users.noreply.github.com> Date: Fri, 19 Sep 2025 13:34:39 +0200 Subject: [PATCH 1/2] feat(node): Support IPv6 as DSN (#2996) --- packages/core/src/utils/dsn.ts | 2 +- packages/node-core/src/transports/http.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/core/src/utils/dsn.ts b/packages/core/src/utils/dsn.ts index 492f2398c390..435927688617 100644 --- a/packages/core/src/utils/dsn.ts +++ b/packages/core/src/utils/dsn.ts @@ -7,7 +7,7 @@ import { consoleSandbox, debug } from './debug-logger'; const ORG_ID_REGEX = /^o(\d+)\./; /** Regular expression used to parse a Dsn. */ -const DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/; +const DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[0-9a-fA-F:]+\]|[\w.-]+))(?::(\d+))?\/(.+)/; function isValidProtocol(protocol?: string): protocol is DsnProtocol { return protocol === 'http' || protocol === 'https'; diff --git a/packages/node-core/src/transports/http.ts b/packages/node-core/src/transports/http.ts index 49897dfa22b1..cd8026029155 100644 --- a/packages/node-core/src/transports/http.ts +++ b/packages/node-core/src/transports/http.ts @@ -127,12 +127,15 @@ function createRequestExecutor( body = body.pipe(createGzip()); } + const hostnameIsIPv6 = hostname.startsWith("["); + const req = httpModule.request( { method: 'POST', agent, headers, - hostname, + // Remove "[" and "]" from IPv6 hostnames + hostname: hostnameIsIPv6 ? hostname.slice(1, -1) : hostname, path: `${pathname}${search}`, port, protocol, From d9e6e74a21caf6ac00479ed7fe63c16996c6bde7 Mon Sep 17 00:00:00 2001 From: Xge <29895712+xgedev@users.noreply.github.com> Date: Fri, 19 Sep 2025 13:39:56 +0200 Subject: [PATCH 2/2] style(node): Resolve warns shown by "yarn lint" --- packages/node-core/src/transports/http.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node-core/src/transports/http.ts b/packages/node-core/src/transports/http.ts index cd8026029155..18a8a558ae0a 100644 --- a/packages/node-core/src/transports/http.ts +++ b/packages/node-core/src/transports/http.ts @@ -127,7 +127,7 @@ function createRequestExecutor( body = body.pipe(createGzip()); } - const hostnameIsIPv6 = hostname.startsWith("["); + const hostnameIsIPv6 = hostname.startsWith('['); const req = httpModule.request( {