From d672b7a0443ee9ce51b805e581194f05df92ac17 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 26 Feb 2017 16:53:01 +0100 Subject: [PATCH] Prefer IPv4 DNS servers --- .../eu/faircode/netguard/ServiceSinkhole.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/netguard/ServiceSinkhole.java b/app/src/main/java/eu/faircode/netguard/ServiceSinkhole.java index c9c25db0..036ad71b 100644 --- a/app/src/main/java/eu/faircode/netguard/ServiceSinkhole.java +++ b/app/src/main/java/eu/faircode/netguard/ServiceSinkhole.java @@ -970,9 +970,9 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS public static List getDns(Context context) { List listDns = new ArrayList<>(); + List sysDns = Util.getDefaultDNS(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - List sysDns = Util.getDefaultDNS(context); String vpnDns1 = prefs.getString("dns", null); String vpnDns2 = prefs.getString("dns2", null); Log.i(TAG, "DNS system=" + TextUtils.join(",", sysDns) + " VPN1=" + vpnDns1 + " VPN2=" + vpnDns2); @@ -1003,6 +1003,21 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS } catch (Throwable ignored) { } + // Prefer IPv4 addresses + Collections.sort(listDns, new Comparator() { + @Override + public int compare(InetAddress a, InetAddress b) { + boolean a4 = (a instanceof Inet4Address); + boolean b4 = (b instanceof Inet4Address); + if (a4 && !b4) + return -1; + else if (!a4 && b4) + return 1; + else + return 0; + } + }); + return listDns; }