summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomás Touceda <chiiph@leap.se>2013-06-14 12:45:08 -0300
committerTomás Touceda <chiiph@leap.se>2013-06-14 12:45:08 -0300
commit8bee5f4e9a1bb0f7069fe41ab37dfec000487d7b (patch)
treeaced8cb3ba7b9d6db54740fbaf327144008b22b9
parent733343465354e52e33dfe14aca54ebb7b786f5dd (diff)
Actually deferToThread all the things we expect to do in parallel
-rw-r--r--src/leap/crypto/srpauth.py19
-rw-r--r--src/leap/services/abstractbootstrapper.py7
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)