Skip to content

Preserve ECH acceptance in uTLS connection state - #7

Open
wy15 wants to merge 1 commit into
HyNetworks:v0.61.0-mod-renamefrom
wy15:agent/preserve-ech-accepted
Open

Preserve ECH acceptance in uTLS connection state#7
wy15 wants to merge 1 commit into
HyNetworks:v0.61.0-mod-renamefrom
wy15:agent/preserve-ech-accepted

Conversation

@wy15

@wy15 wy15 commented Aug 6, 2026

Copy link
Copy Markdown

Summary

Preserve ECHAccepted when adapting a uTLS QUIC connection state to the standard-library tls.ConnectionState used by quic-go.

Why

Hysteria v2.12.0 enables ChromeParrot by default. Its client passes a configured ECH config list into uTLS, but the ChromeParrot adapter omitted ECHAccepted while translating the resulting connection state. The omitted boolean therefore remained false, causing Hysteria's successful connection log to report "ech": false even when the server accepted ECH.

This was reproduced with Hysteria v2.12.0 on both client and server: the default ChromeParrot path logged "ech": false, while setting quic.disableChromeParrot: true made the same ECH configuration log "ech": true.

Changes

  • Copy s.ECHAccepted into the standard-library connection state.
  • Add a focused regression test for the uTLS-to-standard-library state conversion.

Validation

go test ./internal/handshake -run TestUTLSConnectionStateToStdPreservesECHAccepted -count=1
go test ./internal/handshake -count=1

Both checks pass.

@wy15
wy15 marked this pull request as ready for review August 7, 2026 00:40
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