diff options
-rw-r--r-- | bonafide/src/leap/bonafide/_protocol.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/bonafide/src/leap/bonafide/_protocol.py b/bonafide/src/leap/bonafide/_protocol.py index e50d020c..726185ea 100644 --- a/bonafide/src/leap/bonafide/_protocol.py +++ b/bonafide/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): |