From d92d86e6bca75141af8166b5a155dd05cddb3c7f Mon Sep 17 00:00:00 2001 From: Jefry Lagrange Date: Fri, 22 Jul 2011 16:15:34 -0400 Subject: [PATCH] connecting to candidates in session-accept --- src/common/jingle_content.py | 1 + src/common/jingle_ft.py | 30 +++++++++++++++++++++++++----- src/common/jingle_session.py | 2 +- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/common/jingle_content.py b/src/common/jingle_content.py index 8fb583431..005d45831 100644 --- a/src/common/jingle_content.py +++ b/src/common/jingle_content.py @@ -100,6 +100,7 @@ class JingleContent(object): """ Add a list of candidates to the list of remote candidates """ + self.transport.remote_candidates = candidates pass def on_stanza(self, stanza, content, error, action): diff --git a/src/common/jingle_ft.py b/src/common/jingle_ft.py index ea87c7e43..c3bb9a9a6 100644 --- a/src/common/jingle_ft.py +++ b/src/common/jingle_ft.py @@ -96,15 +96,15 @@ class JingleFileTransfer(JingleContent): def __on_session_accept(self, stanza, content, error, action): log.info("__on_session_accept") - + con = self.session.connection security = content.getTag('security') if not security: # responder can not verify our fingerprint self.use_security = False - + + if self.state == STATE_TRANSPORT_REPLACE: # We ack the session accept response = stanza.buildReply('result') - con = self.session.connection con.connection.send(response) # We send the file con.files_props[self.file_props['sid']] = self.file_props @@ -112,7 +112,27 @@ class JingleFileTransfer(JingleContent): con.OpenStream( self.transport.sid, self.session.peerjid, fp, blocksize=4096) raise xmpp.NodeProcessed - + + 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 + + response = stanza.buildReply('result') + con.connection.send(response) + + if not gajim.socks5queue.get_file_props( + self.session.connection.name, self.file_props['sid']): + gajim.socks5queue.add_file_props(self.session.connection.name, + self.file_props) + fingerprint = None + if self.use_security: + fingerprint = 'client' + gajim.socks5queue.connect_to_hosts(self.session.connection.name, + self.file_props['sid'], self.send_candidate_used, + self._on_connect_error, fingerprint=fingerprint) + + raise xmpp.NodeProcessed def __on_session_terminate(self, stanza, content, error, action): log.info("__on_session_terminate") @@ -245,7 +265,7 @@ class JingleFileTransfer(JingleContent): self.send_error_candidate() log.info('connect error, sid=' + sid) - + def _fill_content(self, content): description_node = xmpp.simplexml.Node( tag=xmpp.NS_JINGLE_FILE_TRANSFER + ' description') diff --git a/src/common/jingle_session.py b/src/common/jingle_session.py index 8f96b54a1..29dcf6b71 100644 --- a/src/common/jingle_session.py +++ b/src/common/jingle_session.py @@ -113,7 +113,7 @@ class JingleSession(object): 'description-info': [self.__broadcast, self.__ack], #TODO 'security-info': [self.__ack], #TODO 'session-accept': [self.__on_session_accept, self.__on_content_accept, - self.__broadcast, self.__ack], + self.__broadcast], 'session-info': [self.__broadcast, self.__on_session_info, self.__ack], 'session-initiate': [self.__on_session_initiate, self.__broadcast, self.__ack],