Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

conn_test.go 988B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package proxyprotocol
  2. import (
  3. "net"
  4. "syscall"
  5. "testing"
  6. "github.com/pires/go-proxyproto"
  7. "github.com/stretchr/testify/require"
  8. )
  9. func TestConnWrapperSyscallConn(t *testing.T) {
  10. listener, err := net.Listen("tcp4", "127.0.0.1:0")
  11. require.NoError(t, err)
  12. defer listener.Close() //nolint: errcheck
  13. accepted := make(chan net.Conn, 1)
  14. acceptErr := make(chan error, 1)
  15. go func() {
  16. conn, err := listener.Accept()
  17. if err != nil {
  18. acceptErr <- err
  19. return
  20. }
  21. accepted <- conn
  22. }()
  23. clientConn, err := net.Dial("tcp4", listener.Addr().String())
  24. require.NoError(t, err)
  25. defer clientConn.Close() //nolint: errcheck
  26. var conn net.Conn
  27. select {
  28. case err := <-acceptErr:
  29. require.NoError(t, err)
  30. case conn = <-accepted:
  31. }
  32. defer conn.Close() //nolint: errcheck
  33. wrapped := connWrapper{proxyproto.NewConn(conn)}
  34. _, ok := any(wrapped).(syscall.Conn)
  35. require.True(t, ok)
  36. rawConn, err := wrapped.SyscallConn()
  37. require.NoError(t, err)
  38. require.NotNil(t, rawConn)
  39. }