Mercurial > libervia-backend
diff src/plugins/plugin_sec_otr.py @ 1169:a3354063dfb6
plugin OTR: disconnect the active OTR sessions and delete the context on profile disconnection
author | souliane <souliane@mailoo.org> |
---|---|
date | Fri, 05 Sep 2014 11:01:14 +0200 |
parents | 39572f9d5249 |
children | 2df6427a5299 |
line wrap: on
line diff
--- a/src/plugins/plugin_sec_otr.py Fri Sep 05 10:39:06 2014 +0200 +++ b/src/plugins/plugin_sec_otr.py Fri Sep 05 11:01:14 2014 +0200 @@ -115,6 +115,11 @@ profile=client.profile) # TODO: send signal to frontends + def disconnect(self): + """Disconnect the session.""" + if self.state != potr.context.STATE_PLAINTEXT: + super(Context, self).disconnect() + class Account(potr.context.Account): #TODO: manage trusted keys: if a fingerprint is not used anymore, we have no way to remove it from database yet (same thing for a correspondent jid) @@ -240,6 +245,12 @@ def profileDisconnected(self, profile): try: + for context in self.context_managers[profile].contexts.values(): + context.disconnect() + del self.context_managers[profile] + except KeyError: + pass + try: self.skipped_profiles.remove(profile) except KeyError: pass @@ -371,8 +382,7 @@ if C.bool(data['answer']): # we end all sessions for context in ctxMng.contexts.values(): - if context.state not in (potr.context.STATE_FINISHED, potr.context.STATE_PLAINTEXT): - context.disconnect() + context.disconnect() ctxMng.account.privkey = None ctxMng.account.getPrivkey() # as account.privkey is None, getPrivkey will generate a new key, and save it return {'xmlui': xml_tools.note(_("Your private key has been dropped")).toXml()}