summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Pollan <meskio@sindominio.net>2016-08-27 19:14:54 +0200
committerRuben Pollan <meskio@sindominio.net>2016-08-27 19:16:47 +0200
commit28d75e6740a102bed552d0e3ea9e45c9da85dd3e (patch)
tree1260664ad37ce77ce72ac2d01a2adc229b0c2ed4
parenta6dc6a1f6d7166c79516ed40f43c1b46d26d169e (diff)
[bug] don't cache failed sessions
We were caching sessions even when the authentication has failed, making impossible to try again with a different password. - Resolves: #8226
-rw-r--r--src/leap/bonafide/_protocol.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/leap/bonafide/_protocol.py b/src/leap/bonafide/_protocol.py
index e50d020..726185e 100644
--- a/src/leap/bonafide/_protocol.py
+++ b/src/leap/bonafide/_protocol.py
@@ -70,6 +70,11 @@ class BonafideProtocol(object):
self._sessions[full_id] = session
return session
+ def _del_session_errback(self, failure, full_id):
+ if full_id in self._sessions:
+ del self._sessions[full_id]
+ return failure
+
# Service public methods
def do_signup(self, full_id, password):
@@ -94,6 +99,7 @@ class BonafideProtocol(object):
session = self._get_session(provider, full_id, password)
d = session.signup(username, password)
d.addCallback(return_user, session)
+ d.addErrback(self._del_session_errback, full_id)
return d
def do_authenticate(self, full_id, password):
@@ -125,6 +131,7 @@ class BonafideProtocol(object):
session = self._get_session(provider, full_id, password)
d = session.authenticate()
d.addCallback(return_token_and_uuid, session)
+ d.addErrback(self._del_session_errback, full_id)
return d
def do_logout(self, full_id):