From 3d8d66fa43db6c333d15a57030405ece66dc9e76 Mon Sep 17 00:00:00 2001 From: Goffi Date: Fri, 27 Nov 2015 16:48:41 +0100 Subject: [PATCH] core (memory): stopSession implementation --- src/memory/memory.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/memory/memory.py b/src/memory/memory.py index 8e10f28b..261ce9cc 100644 --- a/src/memory/memory.py +++ b/src/memory/memory.py @@ -357,6 +357,20 @@ class Memory(object): return self.host.initialised.addCallback(backendInitialised) + def stopSession(self, profile): + """Delete a profile session + + @param profile: %(doc_profile)s + """ + if self.host.isConnected(profile): + log.debug(u"Disconnecting profile because of session stop") + self.host.disconnect(profile) + self.auth_sessions.profileDelUnique(profile) + try: + self._entities_cache[profile] + except KeyError: + log.warning(u"Profile was not in cache") + def _isSessionStarted(self, profile_key): return self.isSessionStarted(self.getProfileName(profile_key)) @@ -374,6 +388,7 @@ class Memory(object): @param password (unicode): the SàT profile password @param profile: %(doc_profile)s @return (D): a deferred None in case of success, a failure otherwise. + @raise exceptions.PasswordError: the password does not match """ session_data = self.auth_sessions.profileGetUnique(profile) if not password and session_data: @@ -385,7 +400,7 @@ class Memory(object): def check_result(result): if not result: log.warning(u'Authentication failure of profile {}'.format(profile)) - raise exceptions.PasswordError(u"The provided profile password doesn't match.") + raise failure.Failure(exceptions.PasswordError(u"The provided profile password doesn't match.")) if not session_data: # avoid to create two profile sessions when password if specified return self.newAuthSession(password, profile)