From 5bec8c7a09c7350d2481e2ca84db021abb91e8b4 Mon Sep 17 00:00:00 2001
From: Jefry Lagrange <jefry.reyes@gmail.com>
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 27fa590a2c..ee133c33fd 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 18402c6fc2..f6f5e4aa9d 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 f9989c2496..0405a68eea 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 836e7975ec..0328fca6a1 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 cc363c5be8..13dddaa201 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 dda49dfc4e..045851a928 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 ab78961541..5c6bc98098 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))
-- 
GitLab