read_wait_utls.go 955 B

123456789101112131415161718192021222324252627282930313233343536
  1. //go:build go1.21 && !without_badtls && with_utls
  2. package badtls
  3. import (
  4. "net"
  5. _ "unsafe"
  6. "github.com/metacubex/utls"
  7. )
  8. func init() {
  9. tlsRegistry = append(tlsRegistry, func(conn net.Conn) (loaded bool, tlsReadRecord func() error, tlsHandlePostHandshakeMessage func() error) {
  10. switch tlsConn := conn.(type) {
  11. case *tls.UConn:
  12. return true, func() error {
  13. return utlsReadRecord(tlsConn.Conn)
  14. }, func() error {
  15. return utlsHandlePostHandshakeMessage(tlsConn.Conn)
  16. }
  17. case *tls.Conn:
  18. return true, func() error {
  19. return utlsReadRecord(tlsConn)
  20. }, func() error {
  21. return utlsHandlePostHandshakeMessage(tlsConn)
  22. }
  23. }
  24. return
  25. })
  26. }
  27. //go:linkname utlsReadRecord github.com/metacubex/utls.(*Conn).readRecord
  28. func utlsReadRecord(c *tls.Conn) error
  29. //go:linkname utlsHandlePostHandshakeMessage github.com/metacubex/utls.(*Conn).handlePostHandshakeMessage
  30. func utlsHandlePostHandshakeMessage(c *tls.Conn) error