1
0
Fork 1

Use only active network dns if there is any

(cherry picked from commit e6534b61bdd255a118b562d9840193f3f721b624)
This commit is contained in:
Stephen Paul Weber 2024-12-09 10:52:42 -05:00 committed by Arne
parent 8d29f71c92
commit 724bfc508e

View file

@ -41,8 +41,8 @@ public class AndroidUsingLinkProperties extends AbstractDnsServerLookupMechanism
return new ArrayList<>(); return new ArrayList<>();
} }
final Network activeNetwork = getActiveNetwork(connectivityManager); final Network activeNetwork = getActiveNetwork(connectivityManager);
final List<String> servers = new ArrayList<>(); final List<String> networkServers = new ArrayList<>();
int offset = 0; final List<String> otherServers = new ArrayList<>();
for(Network network : networks) { for(Network network : networks) {
LinkProperties linkProperties = connectivityManager.getLinkProperties(network); LinkProperties linkProperties = connectivityManager.getLinkProperties(network);
if (linkProperties == null) { if (linkProperties == null) {
@ -51,15 +51,13 @@ public class AndroidUsingLinkProperties extends AbstractDnsServerLookupMechanism
final NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network); final NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
final boolean isActiveNetwork = network.equals(activeNetwork); final boolean isActiveNetwork = network.equals(activeNetwork);
final boolean isVpn = networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_VPN; final boolean isVpn = networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_VPN;
if (isActiveNetwork) { final List<String> servers = getIPv4First(linkProperties.getDnsServers());
final List<String> tmp = getIPv4First(linkProperties.getDnsServers()); if (hasDefaultRoute(linkProperties) || isActiveNetwork || activeNetwork == null || isVpn) {
servers.addAll(0, tmp); if (isActiveNetwork || isVpn) networkServers.addAll(servers);
offset += tmp.size(); otherServers.addAll(servers);
} else if (hasDefaultRoute(linkProperties) || isActiveNetwork || activeNetwork == null || isVpn) {
servers.addAll(offset, getIPv4First(linkProperties.getDnsServers()));
} }
} }
return servers.stream().distinct().collect(Collectors.toList()); return (networkServers.isEmpty() ? otherServers : networkServers).stream().distinct().collect(Collectors.toList());
} }
@TargetApi(23) @TargetApi(23)