diff options
author | Brendan Taylor <bct@diffeq.com> | 2008-08-09 02:55:12 +0400 |
---|---|---|
committer | Brendan Taylor <bct@diffeq.com> | 2008-08-09 02:55:12 +0400 |
commit | ab70491d56233b599ce9789bc4155d187d7acb85 (patch) | |
tree | 2d6ef9c38e94e9264c38db0bcd977cea91f3cfa7 | |
parent | f5059b4e26fdff14df9474a2768f2c98bb342c4c (diff) |
correctly decide whether to autonegotiate after a session was replaced
-rw-r--r-- | src/chat_control.py | 17 | ||||
-rwxr-xr-x | src/gajim.py | 3 |
2 files changed, 10 insertions, 10 deletions
diff --git a/src/chat_control.py b/src/chat_control.py index b31ec65fb..8e65afe95 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -1153,7 +1153,6 @@ class ChatControl(ChatControlBase): self.print_esession_details() # Enable encryption if needed - self.no_autonegotiation = False e2e_is_active = self.session and self.session.enable_encryption self.gpg_is_active = False gpg_pref = gajim.config.get_per('contacts', contact.jid, @@ -2325,18 +2324,22 @@ class ChatControl(ChatControlBase): self.account, 'autonegotiate_esessions') and \ gajim.config.get_per('contacts', self.contact.jid, 'autonegotiate_esessions') + want_e2e = not e2e_is_active and not self.gpg_is_active \ and e2e_pref + already_negotiating = bool(self.session and \ + self.session.status) + # XXX: Once we have fallback to disco, remove # notexistant check - if want_e2e and not self.no_autonegotiation \ - and gajim.HAVE_PYCRYPTO \ - and gajim.capscache.is_supported(self.contact, - NS_ESESSION) and not gajim.capscache.is_supported( - self.contact, 'notexistant'): + can_e2e = gajim.HAVE_PYCRYPTO and gajim.capscache. \ + is_supported(self.contact, NS_ESESSION) and \ + not gajim.capscache.is_supported(self.contact, + 'notexistant') + + if want_e2e and not already_negotiating and can_e2e: self.begin_e2e_negotiation() - self.no_autonegotiation = True else: self.send_chatstate('active', self.contact) diff --git a/src/gajim.py b/src/gajim.py index d520b9f42..ccb400f66 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -816,9 +816,6 @@ class Interface: for sess in conn.get_sessions(ji): if (ji+'/'+resource) != str(sess.jid): continue - ctrl = sess.control - if ctrl: - ctrl.no_autonegotiation = False if sess.enable_encryption: sess.terminate_e2e() conn.delete_session(jid, |