//go:build go1.21 && !without_badtls && with_ech package badtls import ( "net" _ "unsafe" "github.com/sagernet/cloudflare-tls" "github.com/sagernet/sing/common" ) func init() { tlsRegistry = append(tlsRegistry, func(conn net.Conn) (loaded bool, tlsReadRecord func() error, tlsHandlePostHandshakeMessage func() error) { tlsConn, loaded := common.Cast[*tls.Conn](conn) if !loaded { return } return true, func() error { return echReadRecord(tlsConn) }, func() error { return echHandlePostHandshakeMessage(tlsConn) } }) } //go:linkname echReadRecord github.com/sagernet/cloudflare-tls.(*Conn).readRecord func echReadRecord(c *tls.Conn) error //go:linkname echHandlePostHandshakeMessage github.com/sagernet/cloudflare-tls.(*Conn).handlePostHandshakeMessage func echHandlePostHandshakeMessage(c *tls.Conn) error