From 5bec8c7a09c7350d2481e2ca84db021abb91e8b4 Mon Sep 17 00:00:00 2001 From: Jefry Lagrange Date: Sat, 25 Aug 2012 12:09:50 -0400 Subject: [PATCH] make file_props use session sid as the default sid --- src/common/connection_handlers_events.py | 6 ++---- src/common/file_props.py | 2 +- src/common/jingle_ft.py | 3 ++- src/common/jingle_transport.py | 4 ++-- src/common/protocol/bytestream.py | 8 ++++---- src/filetransfers_window.py | 5 +++-- src/gui_interface.py | 5 ++--- 7 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/common/connection_handlers_events.py b/src/common/connection_handlers_events.py index 27fa590a2..ee133c33f 100644 --- a/src/common/connection_handlers_events.py +++ b/src/common/connection_handlers_events.py @@ -1981,11 +1981,9 @@ class FileRequestReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): self.FT_content.session.ourjid) self.FT_content.transport.set_connection( self.FT_content.session.connection) - sid = self.FT_content.transport.sid + sid = unicode(self.stanza.getTag('jingle').getAttr('sid')) self.file_props = FilesProp.getNewFileProp(self.conn.name, sid) - self.file_props.session_sid = unicode( - self.stanza.getTag('jingle').getAttr('sid') - ) + self.file_props.transport_sid = self.FT_content.transport.sid self.FT_content.file_props = self.file_props self.FT_content.transport.set_file_props(self.file_props) if self.file_props.streamhosts: diff --git a/src/common/file_props.py b/src/common/file_props.py index 18402c6fc..f6f5e4aa9 100644 --- a/src/common/file_props.py +++ b/src/common/file_props.py @@ -123,6 +123,7 @@ class FileProp(object): self.tt_account = None self.size = None self._sid = sid + self.transport_sid = None self.account = account self.mime_type = None self.algo = None @@ -130,7 +131,6 @@ class FileProp(object): self.syn_id = None self.seq = None self.hash_ = None - self.session_sid = None self.fd = None self.startexmpp = None self.session_type = None diff --git a/src/common/jingle_ft.py b/src/common/jingle_ft.py index f9989c249..0405a68ee 100644 --- a/src/common/jingle_ft.py +++ b/src/common/jingle_ft.py @@ -76,8 +76,9 @@ class JingleFileTransfer(JingleContent): self.file_props.sender = session.ourjid self.file_props.receiver = session.peerjid self.file_props.session_type = 'jingle' - self.file_props.session_sid = session.sid + self.file_props.sid = session.sid self.file_props.transfered_size = [] + self.file_props.transport_sid = self.transport.sid log.info("FT request: %s" % file_props) if transport is None: self.transport = JingleTransportSocks5() diff --git a/src/common/jingle_transport.py b/src/common/jingle_transport.py index 836e7975e..0328fca6a 100644 --- a/src/common/jingle_transport.py +++ b/src/common/jingle_transport.py @@ -250,7 +250,7 @@ class JingleTransportSocks5(JingleTransport): def get_content(self): sesn = self.connection.get_jingle_session(self.ourjid, - self.file_props.session_sid) + self.file_props.sid) for content in sesn.contents.values(): if content.transport == self: return content @@ -261,7 +261,7 @@ class JingleTransportSocks5(JingleTransport): if not self.connection: return sesn = self.connection.get_jingle_session(self.ourjid, - self.file_props.session_sid) + self.file_props.sid) if sesn is None: return diff --git a/src/common/protocol/bytestream.py b/src/common/protocol/bytestream.py index cc363c5be..13dddaa20 100644 --- a/src/common/protocol/bytestream.py +++ b/src/common/protocol/bytestream.py @@ -143,12 +143,12 @@ class ConnectionBytestream: log.info("send_file_approval: jingle session accept") if file_props.session_type == 'jingle': session = self.get_jingle_session(file_props.sender, - file_props.session_sid) + file_props.sid) if not session: return content = None for c in session.contents.values(): - if c.transport.sid == file_props.sid: + if c.transport.sid == file_props.transport_sid: content = c break if not content: @@ -193,7 +193,7 @@ class ConnectionBytestream: if not self.connection or self.connected < 2: return if file_props.session_type == 'jingle': - jingle = self._sessions[file_props.session_sid] + jingle = self._sessions[file_props.sid] jingle.cancel_session() return iq = xmpp.Iq(to=unicode(file_props.sender), typ='error') @@ -562,7 +562,7 @@ class ConnectionSocks5Bytestream(ConnectionBytestream): else: to = file_props.sender iq = xmpp.Iq(to=to, typ='error') - iq.setAttr('id', file_props.session_sid) + iq.setAttr('id', file_props.sid) err = iq.setTag('error') err.setAttr('code', unicode(code)) err.setData(msg) diff --git a/src/filetransfers_window.py b/src/filetransfers_window.py index dda49dfc4..045851a92 100644 --- a/src/filetransfers_window.py +++ b/src/filetransfers_window.py @@ -257,7 +257,7 @@ class FileTransfersWindow: sid = gajim.connections[account].start_file_transfer(fjid, file_props, True) - file_props.sid = sid + file_props.transport_sid = sid if file_props.type_ == 'r': file_name = os.path.basename(file_props.file_name) @@ -643,7 +643,8 @@ class FileTransfersWindow: self.model.set(iter_, 0, self.get_icon(status)) if transfered_size == full_size: # If we are receiver and this is a jingle session - if file_props.type_ == 'r' and file_props.session_sid: + if file_props.type_ == 'r' and \ + file_props.session_type == 'jingle': # Show that we are computing the hash self.set_status(file_props, 'computing') else: diff --git a/src/gui_interface.py b/src/gui_interface.py index ab7896154..5c6bc9809 100644 --- a/src/gui_interface.py +++ b/src/gui_interface.py @@ -941,7 +941,7 @@ class Interface: def __compare_hashes(self, account, file_props): session = gajim.connections[account].get_jingle_session(jid=None, - sid=file_props.session_sid) + sid=file_props.sid) ft_win = self.instances['file_transfers'] if not file_props.hash_: # We disn't get the hash, sender probably don't support that @@ -981,9 +981,8 @@ class Interface: return if file_props.type_ == 'r': # we receive a file - # If we have a jingle session id, it is a jingle transfer # we compare hashes - if file_props.session_sid: + if file_props.session_type == 'jingle': # Compare hashes in a new thread self.hashThread = Thread(target=self.__compare_hashes, args=(account, file_props))