summaryrefslogtreecommitdiff
path: root/src/leap
diff options
context:
space:
mode:
Diffstat (limited to 'src/leap')
-rw-r--r--src/leap/base/network.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/leap/base/network.py b/src/leap/base/network.py
index a1e7c880..92fb7635 100644
--- a/src/leap/base/network.py
+++ b/src/leap/base/network.py
@@ -6,7 +6,7 @@ import threading
from leap.base.checks import LeapNetworkChecker
from leap.base.constants import ROUTE_CHECK_INTERVAL
from leap.base.exceptions import TunnelNotDefaultRouteError
-from leap.util.coroutines import (launch_thread_no_daemon, process_events)
+from leap.util.coroutines import (launch_thread, process_events)
from time import sleep
@@ -22,6 +22,7 @@ class NetworkChecker(object):
self.status_signals = kwargs.pop('status_signals', None)
self.watcher_cb = kwargs.pop('status_signals', None)
self.excp_logger = lambda exc: logger.error("%s", exc.message)
+ self.shutdown = threading.Event()
self.checker = LeapNetworkChecker()
def start(self):
@@ -29,8 +30,7 @@ class NetworkChecker(object):
def stop(self):
#TODO: Thread still not being stopped when openvpn is stopped.
- logger.debug("stopping network checker...")
- self.process_handle._Thread__stop()
+ self.shutdown.set()
logger.debug("network checked stopped.")
def run_checks(self):
@@ -52,7 +52,7 @@ class NetworkChecker(object):
observer_dict = dict(((
observer, process_events(observer)) for observer in fail_callbacks))
- while True:
+ while not self.shutdown.is_set():
try:
self.checker.check_tunnel_default_interface()
self.checker.check_internet_connection()
@@ -61,11 +61,12 @@ class NetworkChecker(object):
for obs in observer_dict:
observer_dict[obs].send(exc)
sleep(ROUTE_CHECK_INTERVAL)
-
+ #reset event
+ self.shutdown.clear()
def _launch_recurrent_network_checks(self, fail_callbacks):
#we need to wrap the fail callback in a turple
- watcher = launch_thread_no_daemon(
+ watcher = launch_thread(
self._network_checks_thread,
(fail_callbacks,))
return watcher