Yann Leboulanger pushed to branch master at gajim / gajim
Commits: b8116f40 by Yann Leboulanger at 2019-10-03T21:00:04Z fix S5B to IBB fallback. Fixes #9692, #9784
- - - - -
3 changed files:
- gajim/common/jingle_content.py - gajim/common/jingle_ft.py - gajim/common/jingle_session.py
Changes:
===================================== gajim/common/jingle_content.py ===================================== @@ -88,7 +88,7 @@ class JingleContent: 'session-terminate': [], 'transport-info': [self.__on_transport_info], 'transport-replace': [self.__on_transport_replace], - 'transport-accept': [], + 'transport-accept': [self.__on_transport_replace], 'transport-reject': [], 'iq-result': [], 'iq-error': [],
===================================== gajim/common/jingle_ft.py ===================================== @@ -312,7 +312,7 @@ class JingleFileTransfer(JingleContent): def __on_iq_result(self, stanza, content, error, action): log.info("__on_iq_result")
- if self.state == State.NOT_STARTED: + if self.state in (State.NOT_STARTED, State.CAND_RECEIVED): self.__state_changed(State.INITIALIZED) elif self.state == State.CAND_SENT_AND_RECEIVED: if not self.nominated_cand['our-cand'] and \
===================================== gajim/common/jingle_session.py ===================================== @@ -140,7 +140,9 @@ class JingleSession: 'transport-info': [self.__ack, self.__broadcast], 'transport-replace': [self.__ack, self.__broadcast, self.__on_transport_replace], #TODO - 'transport-accept': [self.__ack], #TODO + 'transport-accept': [self.__ack, self.__on_session_accept, + self.__on_content_accept, + self.__broadcast], 'transport-reject': [self.__ack], #TODO 'iq-result': [self.__broadcast], 'iq-error': [self.__on_error], @@ -244,8 +246,9 @@ class JingleSession: Currently used for transport replacement ''' content = self.contents[(creator, name)] - transport.set_sid(content.transport.sid) - transport.set_file_props(content.transport.file_props) + file_props = content.transport.file_props + file_props.transport_sid = transport.sid + transport.set_file_props(file_props) content.transport = transport # The content will have to be resend now that it is modified content.sent = False @@ -410,12 +413,13 @@ class JingleSession: # Anyway, content's transport is not modifiable yet pass elif transport_ns == nbxmpp.NS_JINGLE_IBB: - transport = JingleTransportIBB() + transport = JingleTransportIBB(node=content.getTag( + 'transport')) self.modify_content(creator, name, transport) self.state = JingleStates.PENDING self.contents[(creator, name)].state = State.TRANSPORT_REPLACE self.__ack(stanza, jingle, error, action) - self.__session_accept() + self.__transport_accept(transport) else: stanza, jingle = self.__make_jingle('transport-reject') content = jingle.setTag('content', attrs={'creator': creator, @@ -834,3 +838,12 @@ class JingleSession: conn=self.connection, jingle_session=self, media=media)) + + def __transport_accept(self, transport): + assert self.state != JingleStates.ENDED + stanza, jingle = self.__make_jingle('transport-accept') + self.__append_contents(jingle) + self.__broadcast(stanza, jingle, None, 'transport-accept') + self.connection.connection.send(stanza) + self.collect_iq_id(stanza.getID()) + self.state = JingleStates.ACTIVE
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/b8116f40028cc82b43a66331e2f0b140023...