diff options
| -rw-r--r-- | changes/bug-2905_close-app-on-rejected-wizard | 1 | ||||
| -rw-r--r-- | src/leap/gui/mainwindow.py | 7 | ||||
| -rw-r--r-- | src/leap/services/eip/vpnprocess.py | 28 | 
3 files changed, 28 insertions, 8 deletions
| diff --git a/changes/bug-2905_close-app-on-rejected-wizard b/changes/bug-2905_close-app-on-rejected-wizard new file mode 100644 index 00000000..cf3b8e3d --- /dev/null +++ b/changes/bug-2905_close-app-on-rejected-wizard @@ -0,0 +1 @@ +  o Close the app on rejected wizard. Closes bug #2905. diff --git a/src/leap/gui/mainwindow.py b/src/leap/gui/mainwindow.py index 51b96463..5a303830 100644 --- a/src/leap/gui/mainwindow.py +++ b/src/leap/gui/mainwindow.py @@ -299,9 +299,12 @@ class MainWindow(QtGui.QMainWindow):          """          if self._wizard is None:              self._wizard = Wizard(bypass_checks=self._bypass_checks) -        self._wizard.accepted.connect(self._finish_init) +            self._wizard.accepted.connect(self._finish_init) +          self.setVisible(False)          self._wizard.exec_() +        # We need this to process any wizard related event +        QtCore.QCoreApplication.processEvents()          self._wizard = None          self.setVisible(True) @@ -1209,7 +1212,7 @@ class MainWindow(QtGui.QMainWindow):          self._cleanup_pidfiles()          logger.debug('Terminating vpn') -        self._vpn.terminate() +        self._vpn.terminate(shutdown=True)      def quit(self):          """ diff --git a/src/leap/services/eip/vpnprocess.py b/src/leap/services/eip/vpnprocess.py index 162dc7f0..f3443533 100644 --- a/src/leap/services/eip/vpnprocess.py +++ b/src/leap/services/eip/vpnprocess.py @@ -20,8 +20,8 @@ VPN Manager, spawned in a custom processProtocol.  import logging  import os  import psutil +import shutil  import socket -import time  from PySide import QtCore @@ -143,7 +143,7 @@ class VPN(object):          logger.debug("Process did not died. Sending a SIGKILL.")          self._vpnproc.killProcess() -    def terminate(self): +    def terminate(self, shutdown=False):          """          Stops the openvpn subprocess. @@ -156,15 +156,13 @@ class VPN(object):          # First we try to be polite and send a SIGTERM...          if self._vpnproc:              self._sentterm = True -            self._vpnproc.terminate_openvpn() +            self._vpnproc.terminate_openvpn(shutdown=shutdown)              # ...but we also trigger a countdown to be unpolite              # if strictly needed.              reactor.callLater(                  self.TERMINATE_WAIT, self._kill_if_left_alive) -    # TODO: should also cleanup tempfiles!!! -      def _start_pollers(self):          """          Iterate through the registered observers @@ -482,12 +480,30 @@ class VPNManager(object):          """          return self._launcher.get_vpn_env(self._providerconfig) -    def terminate_openvpn(self): +    def terminate_openvpn(self, shutdown=False):          """          Attempts to terminate openvpn by sending a SIGTERM.          """          if self.is_connected():              self._send_command("signal SIGTERM") +        if shutdown: +            self._cleanup_tempfiles() + +    def _cleanup_tempfiles(self): +        """ +        Remove all temporal files we might have left behind. + +        Iif self.port is 'unix', we have created a temporal socket path that, +        under normal circumstances, we should be able to delete. +        """ +        if self._socket_port == "unix": +            logger.debug('cleaning socket file temp folder') +            tempfolder = os.path.split(self._socket_host)[0]  # XXX use `first` +            if os.path.isdir(tempfolder): +                try: +                    shutil.rmtree(tempfolder) +                except OSError: +                    logger.error('could not delete tmpfolder %s' % tempfolder)      # ---------------------------------------------------      # XXX old methods, not adapted to twisted process yet | 
