diff options
| -rw-r--r-- | src/leap/bitmask/vpn/privilege.py | 34 | 
1 files changed, 20 insertions, 14 deletions
diff --git a/src/leap/bitmask/vpn/privilege.py b/src/leap/bitmask/vpn/privilege.py index 54065a81..458f690d 100644 --- a/src/leap/bitmask/vpn/privilege.py +++ b/src/leap/bitmask/vpn/privilege.py @@ -109,23 +109,29 @@ class LinuxPolicyChecker(object):          :returns: a list of the paths where pkexec is to be found          :rtype: list          """ -        if self._is_pkexec_in_system(): -            if not self.is_up(): -                self.launch() -                time.sleep(2) -            if self.is_up(): -                pkexec_possibilities = which(self.PKEXEC_BIN) -                if not pkexec_possibilities: -                    raise Exception("We couldn't find pkexec") -                return pkexec_possibilities -            else: -                log.warn('No polkit auth agent found. pkexec ' + -                         'will use its own auth agent.') -                raise NoPolkitAuthAgentAvailable() -        else: +        if not self._is_pkexec_in_system():              log.warn('System has no pkexec')              raise NoPkexecAvailable() +        if not self.is_up(): +            self.launch() +            seconds = 0 +            while not self.is_up(): +                if seconds >= 20: +                    log.warn('No polkit auth agent found. pkexec ' + +                             'will use its own auth agent.') +                    raise NoPolkitAuthAgentAvailable() + +                # XXX: sleep()!!!! we should do it the twisted way +                time.sleep(1) +                seconds += 1 + +        pkexec_possibilities = which(self.PKEXEC_BIN) +        if not pkexec_possibilities: +            raise Exception("We couldn't find pkexec") + +        return pkexec_possibilities +      @classmethod      def launch(self):          """  | 
