From 48524a60c0d93e17041306976dc004402e9f322a Mon Sep 17 00:00:00 2001 From: Jefry Lagrange <jefry.reyes@gmail.com> Date: Thu, 22 Mar 2012 00:56:11 -0400 Subject: [PATCH] fix handling file transfer cancel properly --- src/common/jingle.py | 2 ++ src/common/jingle_session.py | 10 +++++++--- src/gui_interface.py | 1 - 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/common/jingle.py b/src/common/jingle.py index d4e5b6ada5..5a9c39dee4 100644 --- a/src/common/jingle.py +++ b/src/common/jingle.py @@ -149,6 +149,8 @@ class ConnectionJingle(object): return use_security = contact.supports(xmpp.NS_JINGLE_XTLS) jingle = JingleSession(self, weinitiate=True, jid=jid) + # this is a file transfer + jingle.session_type_FT = True self._sessions[jingle.sid] = jingle file_props['sid'] = jingle.sid if contact.supports(xmpp.NS_JINGLE_BYTESTREAM): diff --git a/src/common/jingle_session.py b/src/common/jingle_session.py index 9518e3b982..a83cb191ab 100644 --- a/src/common/jingle_session.py +++ b/src/common/jingle_session.py @@ -102,6 +102,8 @@ class JingleSession(object): # file. Could be 'md5', 'sha-1', etc... self.hash_algo = None self.file_hash = None + # Tells whether this session is a file transfer or not + self.session_type_FT = False # callbacks to call on proper contents # use .prepend() to add new callbacks, especially when you're going # to send error instead of ack @@ -585,9 +587,11 @@ class JingleSession(object): else: # TODO text = reason - gajim.nec.push_incoming_event(JingleTransferCancelledEvent(None, - conn=self.connection, jingle_session=self, media=None, - reason=text)) + + if reason == 'cancel' and self.session_type_FT: + gajim.nec.push_incoming_event(JingleTransferCancelledEvent(None, + conn=self.connection, jingle_session=self, media=None, + reason=text)) def __broadcast_all(self, stanza, jingle, error, action): """ diff --git a/src/gui_interface.py b/src/gui_interface.py index 7566db12b7..d16b4f7e6e 100644 --- a/src/gui_interface.py +++ b/src/gui_interface.py @@ -1166,7 +1166,6 @@ class Interface: ft.show_stopped(obj.jid, file_props, 'Peer cancelled ' + 'the transfer') - obj.conn.delete_jingle_session(obj.sid) def handle_event_jingle_incoming(self, obj): # ('JINGLE_INCOMING', account, peer jid, sid, tuple-of-contents==(type, -- GitLab