Skip to content

fix(xray): stop emitting obsolete echForceQuery - #10480

Open
aleksandr-miheichev wants to merge 1 commit into
2dust:masterfrom
aleksandr-miheichev:codex/remove-obsolete-ech-force-query
Open

aleksandr-miheichev wants to merge 1 commit into
2dust:masterfrom
aleksandr-miheichev:codex/remove-obsolete-ech-force-query

Conversation

@aleksandr-miheichev

@aleksandr-miheichev aleksandr-miheichev commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Stop adding echForceQuery: "full" to generated TLS settings and remove the obsolete property from TlsSettings4Ray. Preserve echConfigList unchanged, including literal Base64, DNS URLs and the explicit query-domain form.

This retires the legacy-core workaround retained by 2dust/v2rayN#9214. Xray removed runtime handling in XTLS/Xray-core#6032, then removed the deprecated JSON/protobuf fields in XTLS/Xray-core#6226. Stock v26.10.29 ignores this field and enforces ECH when configured. Compatibility with older cores that still depend on the explicit override is outside the verified scope.

Add six generated-JSON regression cases covering Base64, DoH and UDP URLs, an explicit DNS query domain, and null/empty ECH settings. Before the fix, the four populated-ECH cases fail because the legacy field is emitted; after the fix all six pass with SNI and ECH values preserved.

Validation:

  • GitHub Actions for d9ede87: Code Test and WebAPI build/runtime verification pass. Linux x64, Windows x64 and Windows ARM64 each execute ServiceLib.Tests 142/142 and WebAPI tests 387/387; native/container builds and runtime smoke checks also pass.
  • Windows 11, .NET SDK 10.0.403 / runtime 10.0.14: ServiceLib.Tests 142/142; WebAPI tests 387/387.
  • Ubuntu WSL2, .NET SDK 10.0.401 / runtime 10.0.12: ServiceLib.Tests 142/142. WebAPI tests 384/387; the pristine base also gives 384/387. Both runs fail the same two process-tracker tests; each also encounters a connection reset in a different rate-limit test case. The rate-limit class passes 5/5 in an isolated serial rerun.
  • Official Xray v26.10.29 Windows/Linux binaries, release hashes verified: 22/22 loopback runtime checks per OS. Real HTTP forwarding over VLESS/TLS/ECH works with native TLS and Chrome/uTLS with the field absent or set to full. Literal Base64 causes no query to the local ECH DNS responder; a UDP DNS URL causes HTTPS RR type 65 queries. Malformed Base64, empty ECH DNS answers and mismatched server keys reject forwarding. An object-valued echForceQuery is also ignored.
  • Not run: macOS checks (no available macOS host), DoH runtime interoperability (the controlled DNS fixture uses UDP), external proxy servers and alternate cores.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant