summaryrefslogtreecommitdiff
path: root/src/leap/crypto
diff options
context:
space:
mode:
authorkali <kali@leap.se>2013-06-15 01:28:59 +0900
committerkali <kali@leap.se>2013-06-15 01:31:11 +0900
commite6a181c13e8bf99a893b3e3881c13d2df23701a7 (patch)
treeaced8cb3ba7b9d6db54740fbaf327144008b22b9 /src/leap/crypto
parent561e7bc90f21efe5f86be7a842c283f4b7fa7610 (diff)
parent8bee5f4e9a1bb0f7069fe41ab37dfec000487d7b (diff)
Merge remote-tracking branch 'chiiph/bug/true_threading' into develop
Closes #2848
Diffstat (limited to 'src/leap/crypto')
-rw-r--r--src/leap/crypto/srpauth.py22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/leap/crypto/srpauth.py b/src/leap/crypto/srpauth.py
index bcd24de3..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
@@ -459,7 +470,8 @@ class SRPAuth(QtCore.QObject):
:type failure: twisted.python.failure.Failure
"""
logger.error("Error logging in %s" % (failure,))
- self.authentication_finished.emit(False, "%s" % (failure,))
+ self.authentication_finished.emit(False, "%s" % (failure.value,))
+ failure.trap(Exception)
def get_session_id(self):
return self.__instance.get_session_id()