parse transport, construct streamhosts
This commit is contained in:
parent
2b745570ec
commit
2203755734
|
@ -98,6 +98,13 @@ class JingleFileTransfer(JingleContent):
|
||||||
self.transport = JingleTransportSocks5()
|
self.transport = JingleTransportSocks5()
|
||||||
self.transport.set_our_jid(self.session.ourjid)
|
self.transport.set_our_jid(self.session.ourjid)
|
||||||
self.transport.set_file_props(self.file_props)
|
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)
|
log.info("FT request: %s" % file_props)
|
||||||
|
|
||||||
self.session.connection.dispatch('FILE_REQUEST', (jid, 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):
|
def __on_session_accept(self, stanza, content, error, action):
|
||||||
log.info("__on_session_accept")
|
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):
|
def __on_session_terminate(self, stanza, content, error, action):
|
||||||
log.info("__on_session_terminate")
|
log.info("__on_session_terminate")
|
||||||
pass
|
|
||||||
|
|
||||||
def __on_transport_accept(self, stanza, content, error, action):
|
def __on_transport_accept(self, stanza, content, error, action):
|
||||||
log.info("__on_transport_accept")
|
log.info("__on_transport_accept")
|
||||||
pass
|
|
||||||
|
|
||||||
def __on_transport_replace(self, stanza, content, error, action):
|
def __on_transport_replace(self, stanza, content, error, action):
|
||||||
log.info("__on_transport_replace")
|
log.info("__on_transport_replace")
|
||||||
pass
|
|
||||||
|
|
||||||
def __on_transport_reject(self, stanza, content, error, action):
|
def __on_transport_reject(self, stanza, content, error, action):
|
||||||
log.info("__on_transport_reject")
|
log.info("__on_transport_reject")
|
||||||
pass
|
|
||||||
|
|
||||||
def __on_transport_info(self, stanza, content, error, action):
|
def __on_transport_info(self, stanza, content, error, action):
|
||||||
log.info("__on_transport_info")
|
log.info("__on_transport_info")
|
||||||
pass
|
|
||||||
|
|
||||||
def _fill_content(self, content):
|
def _fill_content(self, content):
|
||||||
description_node = xmpp.simplexml.Node(tag=xmpp.NS_JINGLE_FILE_TRANSFER + ' description')
|
description_node = xmpp.simplexml.Node(tag=xmpp.NS_JINGLE_FILE_TRANSFER + ' description')
|
||||||
|
|
|
@ -85,6 +85,7 @@ class JingleTransportSocks5(JingleTransport):
|
||||||
"""
|
"""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
JingleTransport.__init__(self, TransportType.streaming)
|
JingleTransport.__init__(self, TransportType.streaming)
|
||||||
|
self.remote_candidates = []
|
||||||
|
|
||||||
def set_file_props(self, file_props):
|
def set_file_props(self, file_props):
|
||||||
self.file_props = file_props
|
self.file_props = file_props
|
||||||
|
@ -116,7 +117,20 @@ class JingleTransportSocks5(JingleTransport):
|
||||||
return transport
|
return transport
|
||||||
|
|
||||||
def parse_transport_stanza(self, 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):
|
def _add_local_ips_as_candidates(self):
|
||||||
local_ip_cand = []
|
local_ip_cand = []
|
||||||
|
|
|
@ -137,12 +137,17 @@ class ConnectionBytestream:
|
||||||
return
|
return
|
||||||
jid = gajim.get_jid_without_resource(file_props['sender'])
|
jid = gajim.get_jid_without_resource(file_props['sender'])
|
||||||
resource = gajim.get_resource_from_jid(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)
|
gajim.socks5queue.add_file_props(session.ourjid, file_props)
|
||||||
|
|
||||||
if not session.accepted:
|
if not session.accepted:
|
||||||
session.approve_session()
|
session.approve_session()
|
||||||
session.approve_content('file')
|
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
|
return
|
||||||
|
|
||||||
iq = xmpp.Iq(to=unicode(file_props['sender']), typ='result')
|
iq = xmpp.Iq(to=unicode(file_props['sender']), typ='result')
|
||||||
|
|
Loading…
Reference in New Issue