diff options
author | Ruben Pollan <meskio@sindominio.net> | 2016-08-27 19:14:54 +0200 |
---|---|---|
committer | Ruben Pollan <meskio@sindominio.net> | 2016-08-27 19:16:47 +0200 |
commit | 28d75e6740a102bed552d0e3ea9e45c9da85dd3e (patch) | |
tree | 1260664ad37ce77ce72ac2d01a2adc229b0c2ed4 | |
parent | a6dc6a1f6d7166c79516ed40f43c1b46d26d169e (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.py | 7 |
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): |