diff options
| author | Tomás Touceda <chiiph@leap.se> | 2013-06-14 12:45:08 -0300 | 
|---|---|---|
| committer | Tomás Touceda <chiiph@leap.se> | 2013-06-14 12:45:08 -0300 | 
| commit | 8bee5f4e9a1bb0f7069fe41ab37dfec000487d7b (patch) | |
| tree | aced8cb3ba7b9d6db54740fbaf327144008b22b9 | |
| parent | 733343465354e52e33dfe14aca54ebb7b786f5dd (diff) | |
Actually deferToThread all the things we expect to do in parallel
| -rw-r--r-- | src/leap/crypto/srpauth.py | 19 | ||||
| -rw-r--r-- | src/leap/services/abstractbootstrapper.py | 7 | 
2 files changed, 21 insertions, 5 deletions
| diff --git a/src/leap/crypto/srpauth.py b/src/leap/crypto/srpauth.py index d089fa50..0e95ae64 100644 --- a/src/leap/crypto/srpauth.py +++ b/src/leap/crypto/srpauth.py @@ -24,6 +24,7 @@ import json  #this error is raised from requests  from simplejson.decoder import JSONDecodeError +from functools import partial  from PySide import QtCore  from twisted.internet import threads @@ -321,6 +322,9 @@ class SRPAuth(QtCore.QObject):              self.set_session_id(session_id) +        def _threader(self, cb, res, *args, **kwargs): +            return threads.deferToThread(cb, res, *args, **kwargs) +          def authenticate(self, username, password):              """              Executes the whole authentication process for a user @@ -341,10 +345,17 @@ class SRPAuth(QtCore.QObject):                                        username=username,                                        password=password) -            d.addCallback(self._start_authentication, username=username, -                          password=password) -            d.addCallback(self._process_challenge, username=username) -            d.addCallback(self._verify_session) +            d.addCallback( +                partial(self._threader, +                        self._start_authentication), +                username=username, +                password=password) +            d.addCallback( +                partial(self._threader, +                        self._process_challenge), +                username=username) +            d.addCallback(partial(self._threader, +                                  self._verify_session))              return d diff --git a/src/leap/services/abstractbootstrapper.py b/src/leap/services/abstractbootstrapper.py index 2cbd56bc..f0937197 100644 --- a/src/leap/services/abstractbootstrapper.py +++ b/src/leap/services/abstractbootstrapper.py @@ -22,6 +22,8 @@ import logging  import requests +from functools import partial +  from PySide import QtCore  from twisted.internet import threads  from leap.common.check import leap_assert, leap_assert_type @@ -128,6 +130,9 @@ class AbstractBootstrapper(QtCore.QObject):              logger.debug("Emitting %s" % (signal,))              signal.emit({self.PASSED_KEY: True, self.ERROR_KEY: ""}) +    def _callback_threader(self, cb, res, *args, **kwargs): +        return threads.deferToThread(cb, res, *args, **kwargs) +      def addCallbackChain(self, callbacks):          """          Creates a callback/errback chain on another thread using @@ -148,7 +153,7 @@ class AbstractBootstrapper(QtCore.QObject):              if d is None:                  d = threads.deferToThread(cb)              else: -                d.addCallback(cb) +                d.addCallback(partial(self._callback_threader, cb))              d.addErrback(self._errback, signal=sig)              d.addCallback(self._gui_notify, signal=sig)          d.addErrback(self._gui_errback) | 
