summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Alejandro <ivanalejandro0@gmail.com>2015-07-23 18:45:08 -0300
committerIvan Alejandro <ivanalejandro0@gmail.com>2015-08-14 15:28:19 -0300
commit182dd2738f077079a47d3f56033b78dac9204986 (patch)
tree599cf5dc1dd6ba2f43e5ffae528793ba35e116dc
parentddd112e53179cbccbf852d3dd70a80cfc171a957 (diff)
[bug] handle eip-config not providing locations
Is valid for a provider not to provide locations for their gateways. - Resolves: #7281
-rw-r--r--changes/bug-7281_support-no-locations-for-eip1
-rw-r--r--src/leap/bitmask/backend/components.py4
-rw-r--r--src/leap/bitmask/services/eip/eipconfig.py7
3 files changed, 10 insertions, 2 deletions
diff --git a/changes/bug-7281_support-no-locations-for-eip b/changes/bug-7281_support-no-locations-for-eip
new file mode 100644
index 00000000..9f4e748c
--- /dev/null
+++ b/changes/bug-7281_support-no-locations-for-eip
@@ -0,0 +1 @@
+- Closes bug #7281. Support a provider not providing location for the eip gateways.
diff --git a/src/leap/bitmask/backend/components.py b/src/leap/bitmask/backend/components.py
index b833bf59..5f34d290 100644
--- a/src/leap/bitmask/backend/components.py
+++ b/src/leap/bitmask/backend/components.py
@@ -628,7 +628,9 @@ class EIP(object):
# this only works for selecting the first gateway, as we're
# currently doing.
ccodes = gateway_selector.get_gateways_country_code()
- gateway_ccode = ccodes[gateways[0]]
+ gateway_ccode = '' # '' instead of None due to needed signal argument
+ if ccodes is not None:
+ gateway_ccode = ccodes[gateways[0]]
self._signaler.signal(self._signaler.eip_get_gateway_country_code,
gateway_ccode)
diff --git a/src/leap/bitmask/services/eip/eipconfig.py b/src/leap/bitmask/services/eip/eipconfig.py
index b1d08393..43328af9 100644
--- a/src/leap/bitmask/services/eip/eipconfig.py
+++ b/src/leap/bitmask/services/eip/eipconfig.py
@@ -161,12 +161,17 @@ class VPNGatewaySelector(object):
def get_gateways_country_code(self):
"""
Return a dict with ipaddress -> country code mapping.
+ Return None if there are no locations specified.
- :rtype: dict
+ :rtype: dict or None
"""
country_codes = {}
locations = self._eipconfig.get_locations()
+
+ if not locations:
+ return
+
gateways = self._eipconfig.get_gateways()
for idx, gateway in enumerate(gateways):