diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/leap/base/network.py | 8 | ||||
-rw-r--r-- | src/leap/baseapp/mainwindow.py | 14 | ||||
-rw-r--r-- | src/leap/baseapp/network.py | 36 |
3 files changed, 18 insertions, 40 deletions
diff --git a/src/leap/base/network.py b/src/leap/base/network.py index 92fb7635..159e9b21 100644 --- a/src/leap/base/network.py +++ b/src/leap/base/network.py @@ -21,15 +21,15 @@ class NetworkChecker(object): def __init__(self, *args, **kwargs): 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.error_cb = kwargs.pop('error_cb', + lambda exc: logger.error("%s", exc.message)) self.shutdown = threading.Event() self.checker = LeapNetworkChecker() def start(self): - self.process_handle = self._launch_recurrent_network_checks((self.excp_logger,)) + self.process_handle = self._launch_recurrent_network_checks((self.error_cb,)) def stop(self): - #TODO: Thread still not being stopped when openvpn is stopped. self.shutdown.set() logger.debug("network checked stopped.") @@ -70,5 +70,3 @@ class NetworkChecker(object): self._network_checks_thread, (fail_callbacks,)) return watcher - - diff --git a/src/leap/baseapp/mainwindow.py b/src/leap/baseapp/mainwindow.py index 7b2ecb1d..000db8c9 100644 --- a/src/leap/baseapp/mainwindow.py +++ b/src/leap/baseapp/mainwindow.py @@ -28,6 +28,7 @@ class LeapWindow(QtGui.QMainWindow, newLogLine = QtCore.pyqtSignal([str]) statusChange = QtCore.pyqtSignal([object]) + networkError = QtCore.pyqtSignal([object]) def __init__(self, opts): logger.debug('init leap window') @@ -57,3 +58,16 @@ class LeapWindow(QtGui.QMainWindow, # eipapp should catch that if self.conductor.autostart: self.start_or_stopVPN() + + #TODO: Put all Dialogs in one place + @QtCore.pyqtSlot() + def raise_Network_Error(self, exc): + message = exc.message + + # XXX + # check headless = False before + # launching dialog. + # (so Qt tests can assert stuff) + + dialog = ErrorDialog() + dialog.warningMessage(message, 'error') diff --git a/src/leap/baseapp/network.py b/src/leap/baseapp/network.py index 75690cc9..c73e8062 100644 --- a/src/leap/baseapp/network.py +++ b/src/leap/baseapp/network.py @@ -14,44 +14,10 @@ class NetworkCheckerAppMixin(object): """ def __init__(self, *args, **kwargs): - opts = kwargs.pop('opts', None) - config_file = getattr(opts, 'config_file', None) - - self.network_checker_started = False - self.network_checker = NetworkChecker( watcher_cb=self.newLogLine.emit, - status_signals=(self.statusChange.emit, ), + error_cb=self.handle_network_error, debug=self.debugmode) self.network_checker.run_checks() - self.error_check() - - def error_check(self): - """ - consumes the conductor error queue. - pops errors, and acts accordingly (launching user dialogs). - """ - logger.debug('error check') - - errq = self.conductor.error_queue - while errq.qsize() != 0: - logger.debug('%s errors left in network queue', errq.qsize()) - # we get exception and original traceback from queue - error, tb = errq.get() - - # redundant log, debugging the loop. - logger.error('%s: %s', error.__class__.__name__, error.message) - - if issubclass(error.__class__, eip_exceptions.EIPClientError): - self.handle_network_error(error) - - else: - # deprecated form of raising exception. - raise error, None, tb - - if error.failfirst is True: - break - def handle_network_error(self, error): - pass |