Skip to content

Xray-core v26.8.19

Choose a tag to compare

@Jolymmiles Jolymmiles released this 14 Aug 13:04
· 5 commits to main since this release

Highlights

  • Integrates the Hysteria 2.12.1 transport updates proposed in XTLS#6565 and completes the server-side lifecycle and error-handling work needed by this fork.
  • Adds optional UPnP and NAT-PMP port mapping for Realm, together with ipMode selection for dual-stack, IPv4-only, and IPv6-only deployments.
  • Adds QUIC controls for Chrome-style transport behavior, GSO, and Brutal loss compensation.

Fork fixes

  • Preserves existing QuicParams protobuf field numbers and adds compatibility tests to prevent wire/config regressions.
  • Makes Realm mapping leases deterministic: bounded discovery and requests, early renewal, rollback after ambiguous failures, real zero-lifetime NAT-PMP deletion, and cleanup error propagation.
  • Closes Realm constructor and shutdown leaks and serializes renew/close ownership to avoid timer and goroutine races.
  • Ensures Hysteria and XHTTP/3 listeners release UDP sockets and wait for owned accept/client goroutines during shutdown.
  • Clones TLS configuration before applying QUIC client behavior instead of mutating shared state.
  • Propagates Brutal loss-compensation configuration through every affected runtime path.

Upstream changes

  • No additional upstream stable release was merged for this version; upstream main at 7d214f8b is already an ancestor of this fork release.
  • The pending changes from XTLS#6565 were integrated, reviewed against this fork's current QUIC paths, and completed with regression coverage and lifecycle hardening.

Compatibility notes

  • Existing QuicParams protobuf fields 1–13 retain their original numbers; the new options use fields 14–16.
  • Chrome-style QUIC behavior is enabled by default. Set disableChromeParrot when custom certificate callbacks or non-compatible TLS behavior require it.
  • disableGSO is available for platforms or network stacks where UDP GSO must not be used.
  • Realm port mapping is opt-in through portMapping.enabled; omitted configuration preserves the previous behavior.
  • Realm ipMode accepts dual, v4, or v6, and defaults to dual.

Validation

  • Affected unit tests passed on Go 1.26.5.
  • Affected race, checkptr, go vet, formatting, module-integrity, and dependency-ban gates passed.
  • Xray, sing-box, and Mihomo Hysteria process interoperability passed 9/9 executions.
  • The XHTTP/3 HandlerService removal probe confirmed that the UDP listener is released.
  • A static Linux/amd64 release-style cross-build passed (a3b07b4422695ebbdc1288a0f7830ef909516a92181323da68a116ebddad4d77). Native Linux validation and the full platform asset matrix are enforced by the release workflow.