github Jolymmiles/Xray-core v26.8.25-2147
Xray-core v26.8.25-2147

5 hours ago

Highlights

  • Hardened BitTorrent UDP detection for punitive routing and blocking rules. New-flow uTP detection now relies on connection-opening ST_SYN invariants, while valid TURN, STUN, DNS, game-discovery, and DHT framing receive dedicated regression coverage. UDP tracker classification is limited to the BEP 15 connect request so cached announce/scrape shapes cannot mark ordinary game or media datagrams as BitTorrent.
  • Hardened online-presence source attribution across accepted PROXY protocol connections and HTTP-derived transports so accounting follows the trusted carrier peer instead of untrusted datagram metadata.
  • Made pre-response SMUX recovery evict each failed carrier owner and continue bounded replay across remaining siblings, dialing a new carrier only when the pool cannot serve the stream.
  • Reduced repository-wide CI log volume by keeping successful package output concise while preserving full logs on failures.
  • Recalibrated the mandatory 10% SMUX release budget to the previous published fork release v26.8.25-1457 after the external sing-mux comparison proved historically unstable.

Fork fixes

  • Fixed broad stateless uTP matching that could classify established-state or media/game datagrams as BitTorrent.
  • Added command-specific BEP 5, BEP 44, and BEP 51 DHT validation and retained valid tracker extension handling on connect.
  • Added TURN ChannelData precedence for byte patterns that overlap uTP ST_SYN fields and removed an overbroad DNS exclusion that rejected valid uTP connection attempts.
  • Stopped classifying cached-connection-id UDP tracker announce and scrape requests. Those messages have no protocol id, and their remaining counters collide with ordinary UDP; a client whose cached id expires still sends connect and is detected.
  • Preserved accepted PROXY protocol provenance as the physical peer through TCP, gRPC, WebSocket, HTTP Upgrade, and SplitHTTP paths, while rejecting datagram proxy provenance for presence accounting.
  • Fixed a multi-carrier reconnect race where a single replay could reopen another reset session after a peer restart; recovery now retires each failed owner and may reuse a healthy sibling or dial if the remaining pool cannot serve.
  • Regenerated proxyman protobuf output with the repository-pinned protoc toolchain.

Upstream changes

  • Includes latest upstream main at f124daf.
  • Observatory: stop spinning at 100% CPU when no outbound matches subjectSelector.
  • Router: copy-on-write rule and balancer reloads to fix the API data race. The fork's domain-index and PickRouteTag path is preserved on top of that publish model.
  • Upstream independently landed an ST_SYN-only SniffUTP change; this release keeps the already-reviewed fork detector, including TURN precedence and the connect-only tracker rule.

Compatibility notes

  • BitTorrent detector changes do not add configuration, API, or routing schema changes. Valid TCP BitTorrent handshakes, uTP connection attempts, DHT traffic, and UDP tracker connect requests remain classified as bittorrent. Cached announce/scrape-only first datagrams are no longer classified.
  • Accepted PROXY protocol peers may now affect the physical IP used for online-presence accounting; untrusted datagram-level proxy metadata is intentionally ignored.
  • REALITY continues to send numeric version bytes 26.8.25. The 2147 UTC component is display-only and keeps the panel, tag, and release title aligned as 26.8.25-2147.
  • Intentional fork behavior remains unchanged: REALITY client-version bounds have no implicit minimum, and production mux uses the in-tree SMUX implementation.
  • The hard Linux SMUX duration budget remains 10%, now against v26.8.25-1457. The live sing-mux comparison is diagnostic only.

Validation

Don't miss a new Xray-core release

NewReleases is sending notifications on new releases.