Kaynağa Gözat

android: only use google dns server when the default dns server cannot be obtained (#4236)

fatedier 8 ay önce
ebeveyn
işleme
e680acf42d
2 değiştirilmiş dosya ile 7 ekleme ve 2 silme
  1. 1 0
      Release.md
  2. 6 2
      pkg/util/system/system_android.go

+ 1 - 0
Release.md

@@ -5,3 +5,4 @@
 ### Changes
 
 * Updated the default value of `transport.tcpMuxKeepaliveInterval` from 60 to 30.
+* On the Android platform, the Google DNS server is used only when the default DNS server cannot be obtained.

+ 6 - 2
pkg/util/system/system_android.go

@@ -59,8 +59,12 @@ func fixDNSResolver() {
 	// Note: If there are other methods to obtain the default DNS servers, the default DNS servers should be used preferentially.
 	net.DefaultResolver = &net.Resolver{
 		PreferGo: true,
-		Dial: func(ctx context.Context, network, _ string) (net.Conn, error) {
-			return net.Dial(network, "8.8.8.8:53")
+		Dial: func(ctx context.Context, network, addr string) (net.Conn, error) {
+			if addr == "127.0.0.1:53" || addr == "[::1]:53" {
+				addr = "8.8.8.8:53"
+			}
+			var d net.Dialer
+			return d.DialContext(ctx, network, addr)
 		},
 	}
 }