diff --git a/common/listener/listener_tcp.go b/common/listener/listener_tcp.go index 636d0cfb..53d7bc86 100644 --- a/common/listener/listener_tcp.go +++ b/common/listener/listener_tcp.go @@ -3,6 +3,7 @@ package listener import ( "net" "net/netip" + "strings" "syscall" "time" @@ -56,7 +57,7 @@ func (l *Listener) ListenTCP() (net.Listener, error) { if l.tproxy { listenConfig.Control = control.Append(listenConfig.Control, func(network, address string, conn syscall.RawConn) error { return control.Raw(conn, func(fd uintptr) error { - return redir.TProxy(fd, !M.ParseSocksaddr(address).IsIPv4(), false) + return redir.TProxy(fd, !strings.HasSuffix(network, "4"), false) }) }) } diff --git a/common/listener/listener_udp.go b/common/listener/listener_udp.go index 3304f165..e689c8bb 100644 --- a/common/listener/listener_udp.go +++ b/common/listener/listener_udp.go @@ -5,6 +5,7 @@ import ( "net" "net/netip" "os" + "strings" "syscall" "github.com/sagernet/sing-box/adapter" @@ -41,7 +42,7 @@ func (l *Listener) ListenUDP() (net.PacketConn, error) { if l.tproxy { listenConfig.Control = control.Append(listenConfig.Control, func(network, address string, conn syscall.RawConn) error { return control.Raw(conn, func(fd uintptr) error { - return redir.TProxy(fd, !M.ParseSocksaddr(address).IsIPv4(), true) + return redir.TProxy(fd, !strings.HasSuffix(network, "4"), true) }) }) }