diff options
| author | antialias <antialias@leap.se> | 2012-10-01 11:02:40 -0400 | 
|---|---|---|
| committer | antialias <antialias@leap.se> | 2012-10-01 11:02:40 -0400 | 
| commit | c75b27484a999f70a6e28e521f236cf2d403edd1 (patch) | |
| tree | db665a4db8b7bbd63c0f31c64fec699805e62228 | |
| parent | 4c9f6ef89b05408b8951987b8175ecdb14fb73be (diff) | |
Checker starting and stopping correctly.
| -rw-r--r-- | src/leap/base/network.py | 13 | 
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 | 
