Skip to content
Snippets Groups Projects
Commit 22037557 authored by Zhenchao Li's avatar Zhenchao Li
Browse files

parse transport, construct streamhosts

parent 2b745570
No related branches found
No related tags found
No related merge requests found
......@@ -98,6 +98,13 @@ class JingleFileTransfer(JingleContent):
self.transport = JingleTransportSocks5()
self.transport.set_our_jid(self.session.ourjid)
self.transport.set_file_props(self.file_props)
if self.file_props.has_key("streamhosts"):
self.file_props['streamhosts'].extend(self.transport.remote_candidates)
else:
self.file_props['streamhosts'] = self.transport.remote_candidates
for host in self.file_props['streamhosts']:
host['initiator'] = self.session.initiator
host['target'] = self.session.responder
log.info("FT request: %s" % file_props)
self.session.connection.dispatch('FILE_REQUEST', (jid, file_props))
......@@ -106,27 +113,22 @@ class JingleFileTransfer(JingleContent):
def __on_session_accept(self, stanza, content, error, action):
log.info("__on_session_accept")
pass
gajim.socks5queue.send_file(self.file_props, self.session.ourjid)
def __on_session_terminate(self, stanza, content, error, action):
log.info("__on_session_terminate")
pass
def __on_transport_accept(self, stanza, content, error, action):
log.info("__on_transport_accept")
pass
def __on_transport_replace(self, stanza, content, error, action):
log.info("__on_transport_replace")
pass
def __on_transport_reject(self, stanza, content, error, action):
log.info("__on_transport_reject")
pass
def __on_transport_info(self, stanza, content, error, action):
log.info("__on_transport_info")
pass
def _fill_content(self, content):
description_node = xmpp.simplexml.Node(tag=xmpp.NS_JINGLE_FILE_TRANSFER + ' description')
......
......@@ -85,6 +85,7 @@ class JingleTransportSocks5(JingleTransport):
"""
def __init__(self):
JingleTransport.__init__(self, TransportType.streaming)
self.remote_candidates = []
def set_file_props(self, file_props):
self.file_props = file_props
......@@ -116,7 +117,20 @@ class JingleTransportSocks5(JingleTransport):
return transport
def parse_transport_stanza(self, transport):
pass
candidates = []
for candidate in transport.iterTags('candidate'):
cand = {
'state': 0,
'target': self.ourjid,
'host': candidate['host'],
'port': candidate['port']
}
candidates.append(cand)
# we need this when we construct file_props on session-initiation
self.remote_candidates = candidates
return candidates
def _add_local_ips_as_candidates(self):
local_ip_cand = []
......
......@@ -137,12 +137,17 @@ class ConnectionBytestream:
return
jid = gajim.get_jid_without_resource(file_props['sender'])
resource = gajim.get_resource_from_jid(file_props['sender'])
sid = file_props['sid']
gajim.socks5queue.add_file_props(session.ourjid, file_props)
if not session.accepted:
session.approve_session()
session.approve_content('file')
if not gajim.socks5queue.get_file_props(session.ourjid, sid):
gajim.socks5queue.add_file_props(session.ourjid, file_props)
gajim.socks5queue.connect_to_hosts(session.ourjid, sid,
None, None)
return
iq = xmpp.Iq(to=unicode(file_props['sender']), typ='result')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment