changeset 3caa97afda7a in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=3caa97afda7a description: merge
diffstat:
src/common/connection_handlers.py | 20 +++++++++++++++++++- src/common/stanza_session.py | 4 +++- 2 files changed, 22 insertions(+), 2 deletions(-)
diffs (69 lines):
diff -r 4cd4c8a80d49 -r 3caa97afda7a src/common/connection_handlers.py --- a/src/common/connection_handlers.py Tue Aug 30 16:22:03 2011 +0300 +++ b/src/common/connection_handlers.py Tue Aug 30 18:17:46 2011 +0300 @@ -770,6 +770,8 @@ self._nec_iq_error_received) gajim.ged.register_event_handler('presence-received', ged.CORE, self._nec_presence_received) + gajim.ged.register_event_handler('gc-presence-received', ged.CORE, + self._nec_gc_presence_received) gajim.ged.register_event_handler('message-received', ged.CORE, self._nec_message_received) gajim.ged.register_event_handler('decrypted-message-received', ged.CORE, @@ -780,6 +782,8 @@ self._nec_iq_error_received) gajim.ged.remove_event_handler('presence-received', ged.CORE, self._nec_presence_received) + gajim.ged.remove_event_handler('gc-presence-received', ged.CORE, + self._nec_gc_presence_received) gajim.ged.remove_event_handler('message-received', ged.CORE, self._nec_message_received) gajim.ged.remove_event_handler('decrypted-message-received', ged.CORE, @@ -921,10 +925,15 @@ # there won't be any sessions here if the contact terminated # their sessions before going offline (which we do) for sess in self.get_sessions(jid): - if obj.fjid != str(sess.jid): + sess_fjid = str(sess.jid) + if sess.resource: + sess_fjid += '/' + sess.resource + if obj.fjid != sess_fjid: continue if sess.control: sess.control.no_autonegotiation = False + if sess.enable_encryption: + sess.terminate_e2e()
if gajim.config.get('log_contact_status_changes') and \ gajim.config.should_log(self.name, obj.jid): @@ -940,6 +949,15 @@ self.dispatch('DB_ERROR', (pritext, sectext)) our_jid = gajim.get_jid_from_account(self.name)
+ def _nec_gc_presence_received(self, obj): + if obj.conn.name != self.name: + return + for sess in self.get_sessions(obj.fjid): + if obj.fjid != sess.jid: + continue + if sess.enable_encryption: + sess.terminate_e2e() + def _nec_message_received(self, obj): if obj.conn.name != self.name: return diff -r 4cd4c8a80d49 -r 3caa97afda7a src/common/stanza_session.py --- a/src/common/stanza_session.py Tue Aug 30 16:22:03 2011 +0300 +++ b/src/common/stanza_session.py Tue Aug 30 18:17:46 2011 +0300 @@ -1148,8 +1148,10 @@ return xmpp.DataField(name=name, typ='hidden', value=dhs)
def terminate_e2e(self): + self.enable_encryption = False + if self.control: + self.control.print_session_details() self.terminate() - self.enable_encryption = False
def acknowledge_termination(self): StanzaSession.acknowledge_termination(self)