From 39a092b1782e8386787f00525b5c6562bee515b3 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Thu, 22 Nov 2018 19:07:49 +0100 Subject: [PATCH] fix #1427 --- app/dns/hosts.go | 5 +++-- features/dns/localdns/client.go | 12 +++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/dns/hosts.go b/app/dns/hosts.go index 9cc550a0b..7c3983196 100644 --- a/app/dns/hosts.go +++ b/app/dns/hosts.go @@ -76,8 +76,9 @@ func NewStaticHosts(hosts []*Config_HostMapping, legacy map[string]*net.IPOrDoma func filterIP(ips []net.IP, option IPOption) []net.IP { filtered := make([]net.IP, 0, len(ips)) for _, ip := range ips { - if (len(ip) == net.IPv4len && option.IPv4Enable) || (len(ip) == net.IPv6len && option.IPv6Enable) { - filtered = append(filtered, ip) + parsed := net.IPAddress(ip) + if (parsed.Family().IsIPv4() && option.IPv4Enable) || (parsed.Family().IsIPv6() && option.IPv6Enable) { + filtered = append(filtered, parsed.IP()) } } if len(filtered) == 0 { diff --git a/features/dns/localdns/client.go b/features/dns/localdns/client.go index de1c91067..5a2a51b3f 100644 --- a/features/dns/localdns/client.go +++ b/features/dns/localdns/client.go @@ -2,8 +2,8 @@ package localdns import ( "context" - "net" + "v2ray.com/core/common/net" "v2ray.com/core/features/dns" ) @@ -43,8 +43,9 @@ func (c *Client) LookupIPv4(host string) ([]net.IP, error) { } var ipv4 []net.IP for _, ip := range ips { - if len(ip) == net.IPv4len { - ipv4 = append(ipv4, ip) + parsed := net.IPAddress(ip) + if parsed.Family().IsIPv4() { + ipv4 = append(ipv4, parsed.IP()) } } return ipv4, nil @@ -57,8 +58,9 @@ func (c *Client) LookupIPv6(host string) ([]net.IP, error) { } var ipv6 []net.IP for _, ip := range ips { - if len(ip) == net.IPv6len { - ipv6 = append(ipv6, ip) + parsed := net.IPAddress(ip) + if parsed.Family().IsIPv6() { + ipv6 = append(ipv6, parsed.IP()) } } return ipv6, nil