diff --git a/core/src/main/golang/tun/dns.go b/core/src/main/golang/tun/dns.go index a73320e..4b1a8f7 100644 --- a/core/src/main/golang/tun/dns.go +++ b/core/src/main/golang/tun/dns.go @@ -35,13 +35,11 @@ func InitialResolver() { rawResolver := resolver.DefaultResolver if rawResolver == nil { - hijackAddress = nil dnsHandler = nil return } r, ok := rawResolver.(*dns.Resolver) if !ok || r == nil { - hijackAddress = nil dnsHandler = nil return } @@ -54,6 +52,10 @@ func hijackTCPDNS(conn net.Conn, endpoint *binding.Endpoint) bool { return false } + if dnsHandler == nil { + return false + } + if !hijackAddress.Equal(net.IPv4zero) && !hijackAddress.Equal(net.IPv6zero) && !hijackAddress.Equal(endpoint.Target.IP) { return false } @@ -103,6 +105,10 @@ func hijackDNS(payload []byte, endpoint *binding.Endpoint, sender redirect.UDPSe return false } + if dnsHandler == nil { + return false + } + if !hijackAddress.Equal(net.IPv4zero) && !hijackAddress.Equal(net.IPv6zero) && !hijackAddress.Equal(endpoint.Target.IP) { return false }