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..18a8a558ae0a 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,