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/b8116f40028cc82b43a66331e2f0b14002319141

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/commit/b8116f40028cc82b43a66331e2f0b14002319141
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to