From 501a451b8b932e1f0e001599dbfe53810cb9ead0 Mon Sep 17 00:00:00 2001 From: cyBerta Date: Fri, 24 Jul 2020 15:41:17 +0200 Subject: adapt profile selection after perordered gateway list was introduced and use profiles mUsePluggableTransports flag instead of shared preferences to get the requested transport --- .../se/leap/bitmaskclient/eip/GatewaysManager.java | 28 +++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'app/src/main') diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/GatewaysManager.java b/app/src/main/java/se/leap/bitmaskclient/eip/GatewaysManager.java index 70d757d4..aa10ffae 100644 --- a/app/src/main/java/se/leap/bitmaskclient/eip/GatewaysManager.java +++ b/app/src/main/java/se/leap/bitmaskclient/eip/GatewaysManager.java @@ -70,7 +70,7 @@ public class GatewaysManager { Connection.TransportType transportType = getUsePluggableTransports(context) ? OBFS4 : OPENVPN; if (presortedList.size() > 0) { - return getGatewayFromPreorderedList(nClosest, transportType); + return getGatewayFromPresortedList(nClosest, transportType); } return getGatewayFromTimezoneCalculation(nClosest, transportType); @@ -90,7 +90,7 @@ public class GatewaysManager { return null; } - private Gateway getGatewayFromPreorderedList(int nClosest, Connection.TransportType transportType) { + private Gateway getGatewayFromPresortedList(int nClosest, Connection.TransportType transportType) { while (nClosest < presortedList.size()) { Gateway gateway = presortedList.get(nClosest); if (gateway.getProfile(transportType) != null) { @@ -107,7 +107,29 @@ public class GatewaysManager { * @return position of the gateway owning to the profile */ public int getPosition(VpnProfile profile) { - Connection.TransportType transportType = getUsePluggableTransports(context) ? OBFS4 : OPENVPN; + if (presortedList.size() > 0) { + return getPositionFromPresortedList(profile); + } + + return getPositionFromTimezoneCalculatedList(profile); + } + + private int getPositionFromPresortedList(VpnProfile profile) { + Connection.TransportType transportType = profile.mUsePluggableTransports ? OBFS4 : OPENVPN; + Gateway gateway; + int nClosest = 0; + while ((nClosest < presortedList.size())) { + gateway = presortedList.get(nClosest); + if (profile.equals(gateway.getProfile(transportType))) { + return nClosest; + } + nClosest++; + } + return -1; + } + + private int getPositionFromTimezoneCalculatedList(VpnProfile profile) { + Connection.TransportType transportType = profile.mUsePluggableTransports ? OBFS4 : OPENVPN; GatewaySelector gatewaySelector = new GatewaySelector(new ArrayList<>(gateways.values())); Gateway gateway; int nClosest = 0; -- cgit v1.2.3