From 28d75e6740a102bed552d0e3ea9e45c9da85dd3e Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Sat, 27 Aug 2016 19:14:54 +0200 Subject: [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 --- src/leap/bonafide/_protocol.py | 7 +++++++ 1 file changed, 7 insertions(+) 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): -- cgit v1.2.3