summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2014-06-04 12:18:18 -0500
committerKali Kaneko <kali@leap.se>2014-06-04 14:01:50 -0500
commitaba3ea21d83e6e073baf01643b68832530a6f4d0 (patch)
treee16fadc6286fedf1e2ddcd0d4f173a37e7226011
parent532a4f63d219e9d9daa1a3252aa8909ca6d8030a (diff)
tear down fw on cold starts. Closes: ##5727
-rw-r--r--src/leap/bitmask/backend.py6
-rw-r--r--src/leap/bitmask/gui/eip_status.py2
-rw-r--r--src/leap/bitmask/gui/mainwindow.py2
-rw-r--r--src/leap/bitmask/services/eip/conductor.py4
4 files changed, 12 insertions, 2 deletions
diff --git a/src/leap/bitmask/backend.py b/src/leap/bitmask/backend.py
index a18dffef..3c97c797 100644
--- a/src/leap/bitmask/backend.py
+++ b/src/leap/bitmask/backend.py
@@ -381,6 +381,9 @@ class EIP(object):
def _start_eip(self, restart=False):
"""
Start EIP
+
+ :param restart: whether is is a restart.
+ :type restart: bool
"""
provider_config = self._provider_config
eip_config = eipconfig.EIPConfig()
@@ -1742,6 +1745,9 @@ class Backend(object):
eip_state_changed -> str
eip_status_changed -> tuple of str (download, upload)
eip_vpn_launcher_exception
+
+ :param restart: whether is is a restart.
+ :type restart: bool
"""
self._call_queue.put(("eip", "start", None, restart))
diff --git a/src/leap/bitmask/gui/eip_status.py b/src/leap/bitmask/gui/eip_status.py
index f03a1a1d..280ce79e 100644
--- a/src/leap/bitmask/gui/eip_status.py
+++ b/src/leap/bitmask/gui/eip_status.py
@@ -85,6 +85,7 @@ class EIPStatusWidget(QtGui.QWidget):
self._provider = ""
self.is_restart = False
+ self.is_cold_start = True
# Action for the systray
self._eip_disabled_action = QtGui.QAction(
@@ -508,6 +509,7 @@ class EIPStatusWidget(QtGui.QWidget):
# --- is this currently being sent?
self.eipconnection.qtsigs.connected_signal.emit()
self._on_eip_connected()
+ self.is_cold_start = False
# XXX should lookup vpn_state map in EIPConnection
elif vpn_state == "AUTH":
diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py
index 6d30e399..a3b81fde 100644
--- a/src/leap/bitmask/gui/mainwindow.py
+++ b/src/leap/bitmask/gui/mainwindow.py
@@ -1543,6 +1543,8 @@ class MainWindow(QtGui.QMainWindow):
should_start = self._provides_eip_and_enabled()
if should_start and not self._already_started_eip:
+ if self._eip_status.is_cold_start:
+ self._backend.tear_fw_down()
# XXX this should be handled by the state machine.
self._enable_eip_start_action()
self._eip_status.set_eip_status(
diff --git a/src/leap/bitmask/services/eip/conductor.py b/src/leap/bitmask/services/eip/conductor.py
index 4c01225f..cde53631 100644
--- a/src/leap/bitmask/services/eip/conductor.py
+++ b/src/leap/bitmask/services/eip/conductor.py
@@ -125,8 +125,8 @@ class EIPConductor(object):
"""
Starts EIP.
"""
- # FIXME --- pass is_restart parameter to here ???
- is_restart = self._eip_status and self._eip_status.is_restart
+ st = self._eip_status
+ is_restart = st and st.is_restart
def reconnect():
self.qtsigs.disconnecting_signal.connect(self._stop_eip)