sockopt_linux_test.go 777 B

123456789101112131415161718192021222324252627282930313233
  1. //go:build linux
  2. // +build linux
  3. package tcp_test
  4. import (
  5. "context"
  6. "strings"
  7. "testing"
  8. "github.com/xtls/xray-core/common"
  9. "github.com/xtls/xray-core/testing/servers/tcp"
  10. "github.com/xtls/xray-core/transport/internet"
  11. . "github.com/xtls/xray-core/transport/internet/tcp"
  12. )
  13. func TestGetOriginalDestination(t *testing.T) {
  14. tcpServer := tcp.Server{}
  15. dest, err := tcpServer.Start()
  16. common.Must(err)
  17. defer tcpServer.Close()
  18. config, err := internet.ToMemoryStreamConfig(nil)
  19. common.Must(err)
  20. conn, err := Dial(context.Background(), dest, config)
  21. common.Must(err)
  22. defer conn.Close()
  23. originalDest, err := GetOriginalDestination(conn)
  24. if !(dest == originalDest || strings.Contains(err.Error(), "failed to call getsockopt")) {
  25. t.Error("unexpected state")
  26. }
  27. }