make file_props use session sid as the default sid

This commit is contained in:
Jefry Lagrange 2012-08-25 12:09:50 -04:00
parent ce1bdb7b63
commit 5bec8c7a09
7 changed files with 16 additions and 17 deletions

View File

@ -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:

View File

@ -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

View File

@ -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()

View File

@ -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

View File

@ -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)

View File

@ -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:

View File

@ -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))