diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/leap/eip/eipconnection.py | 19 | ||||
| -rw-r--r-- | src/leap/eip/openvpnconnection.py | 30 | 
2 files changed, 31 insertions, 18 deletions
| diff --git a/src/leap/eip/eipconnection.py b/src/leap/eip/eipconnection.py index fea830f3..f0e7861e 100644 --- a/src/leap/eip/eipconnection.py +++ b/src/leap/eip/eipconnection.py @@ -91,7 +91,8 @@ class EIPConnection(OpenVPNConnection):          """          disconnects client          """ -        self._disconnect() +        self.cleanup() +        logger.debug("disconnect: clicked.")          self.status.change_to(self.status.DISCONNECTED)      def shutdown(self): @@ -141,14 +142,14 @@ class EIPConnection(OpenVPNConnection):      # private methods      # -    def _disconnect(self): -        """ -        private method for disconnecting -        """ -        if self.subp is not None: -            logger.debug('disconnecting...') -            self.subp.terminate() -            self.subp = None +    #def _disconnect(self): +    #    """ +    #    private method for disconnecting +    #    """ +    #    if self.subp is not None: +    #        logger.debug('disconnecting...') +    #        self.subp.terminate() +    #        self.subp = None      #def _is_alive(self):          #""" diff --git a/src/leap/eip/openvpnconnection.py b/src/leap/eip/openvpnconnection.py index 14839f6b..96df4f1d 100644 --- a/src/leap/eip/openvpnconnection.py +++ b/src/leap/eip/openvpnconnection.py @@ -174,17 +174,22 @@ to be triggered for each one of them.      def cleanup(self):          """ -        terminates child subprocess +        terminates openvpn child subprocess          """ -        # XXX we should send a quit process using management -        # interface.          if self.subp: -            try: -                self.subp.terminate() -            except OSError: -                logger.error('cannot terminate subprocess!' +            self._stop() +            RETCODE = self.subp.wait() +            if RETCODE: +                logger.error('cannot terminate subprocess! '                               '(maybe openvpn still running?)') +    def _stop(self): +        """ +        stop openvpn process +        """ +        logger.debug("disconnecting...") +        self._send_command("signal SIGTERM\n") +      #      # management methods      # @@ -221,9 +226,16 @@ to be triggered for each one of them.          """          Read as much as available. Position seek pointer to end of stream          """ -        b = self.tn.read_eager() -        while b: +        try:              b = self.tn.read_eager() +        except EOFError: +            logger.debug("Could not read from socket. Assuming it died.") +            return +        while b: +            try: +                b = self.tn.read_eager() +            except EOFError: +                logger.debug("Could not read from socket. Assuming it died.")      def connected(self):          """ | 
