diff --git a/socks.go b/socks.go index fe7a7a2..dfd8012 100644 --- a/socks.go +++ b/socks.go @@ -10,6 +10,7 @@ import ( "net" "net/url" "strconv" + "strings" "sync" "time" @@ -1630,17 +1631,21 @@ func (h *socks5Handler) muxBindOn(conn net.Conn, addr string) { } } -// TODO: support ipv6 and domain +// TODO: support domain func toSocksAddr(addr net.Addr) *gosocks5.Addr { host := "0.0.0.0" port := 0 + addrType := gosocks5.AddrIPv4 if addr != nil { h, p, _ := net.SplitHostPort(addr.String()) host = h port, _ = strconv.Atoi(p) + if strings.Count(host, ":") > 0 { + addrType = gosocks5.AddrIPv6 + } } return &gosocks5.Addr{ - Type: gosocks5.AddrIPv4, + Type: addrType, Host: host, Port: uint16(port), }