#4526·iroh

QAD probes fail for relay URLs with IPv6 literals

Author: William-HerlyCreated Sep 10, 2026Updated Sep 10, 2026
Labelsbug

Describe the bug When setting up a self-hosted relay before a domain name is available, an application can configure the relay URL using its IPv6 address directly. With QAD enabled, this configuration fails during IPv6 probing, even when the service is reachable and its certificate is trusted and valid for that IP address.

For example, a relay may use https://[::1]:8443 for HTTPS and a separately configured QAD UDP port of 7842. QAD uses the host from the relay URL and the port from RelayQuicConfig.

run_probe_v6 passes relay.url.host_str() to QuicClient::create_conn. For an IPv6 literal, this string includes the URL brackets. TLS server-name parsing rejects the bracketed value before certificate verification, so the probe cannot obtain an observed address or latency from this relay.

Relevant Logs The returned error is:

QUIC connection failed: invalid server name: [::1]

Expected behavior A relay URL containing an IPv6 literal should work for QAD when the service is reachable and TLS verification succeeds. URL brackets should not be included in the TLS server name.

Iroh Version:1.2.0, upstream main at 887f180ab1736e5f23c1d599b6f043b3dcba8e61.

Endpoint configuration:an IPv6-literal RelayConfig URL with a RelayQuicConfig pointing to the QAD service port; an IPv6-capable QUIC endpoint and trust configured for the server certificate.

Platform(s) macOS 26.6.2, arm64.

  • This issue was created by a human that thought critically about the issue being reported and wrote this as concisely and clearly as they could. Taking full responsibility for the issue being accurate.
  • This issue isn't slop, and is backed up by evidence.