comparison sat/plugins/plugin_xep_0176.py @ 4054:4c8bf67bfbeb

plugin XEP-0176: fix candidates data format when calling Bridge's `ice_candidates_new`
author Goffi <goffi@goffi.org>
date Mon, 29 May 2023 13:32:32 +0200
parents 2ced30f6d5de
children
comparison
equal deleted inserted replaced
4053:dd39e60ca2aa 4054:4c8bf67bfbeb
157 157
158 def parse_transport(self, transport_elt: domish.Element) -> dict: 158 def parse_transport(self, transport_elt: domish.Element) -> dict:
159 """Parse <transport> to a dict 159 """Parse <transport> to a dict
160 160
161 @param transport_elt: <transport> element 161 @param transport_elt: <transport> element
162 @return: ICE data (as in [build_description]) 162 @return: ICE data (as in [build_transport])
163 """ 163 """
164 try: 164 try:
165 ice_data = { 165 ice_data = {
166 "ufrag": transport_elt["ufrag"], 166 "ufrag": transport_elt["ufrag"],
167 "pwd": transport_elt["pwd"] 167 "pwd": transport_elt["pwd"]
267 267
268 elif action == self._j.A_SESSION_INITIATE: 268 elif action == self._j.A_SESSION_INITIATE:
269 # responder side, we give our candidates 269 # responder side, we give our candidates
270 transport_elt = self.build_transport(transport_data["local_ice_data"]) 270 transport_elt = self.build_transport(transport_data["local_ice_data"])
271 elif action == self._j.A_TRANSPORT_INFO: 271 elif action == self._j.A_TRANSPORT_INFO:
272
273 media_type = content_data["application_data"].get("media")
272 new_ice_data = self.parse_transport(transport_elt) 274 new_ice_data = self.parse_transport(transport_elt)
273 restart = self.update_candidates(transport_data, new_ice_data, local=False) 275 restart = self.update_candidates(transport_data, new_ice_data, local=False)
274 if restart: 276 if restart:
275 log.debug( 277 log.debug(
276 f"Peer ICE restart detected on session {session['id']} " 278 f"Peer ICE restart detected on session {session['id']} "
278 ) 280 )
279 self.host.bridge.ice_restart(session["id"], "peer", client.profile) 281 self.host.bridge.ice_restart(session["id"], "peer", client.profile)
280 282
281 self.host.bridge.ice_candidates_new( 283 self.host.bridge.ice_candidates_new(
282 session["id"], 284 session["id"],
283 data_format.serialise(new_ice_data["candidates"]), 285 data_format.serialise({media_type: new_ice_data}),
284 client.profile 286 client.profile
285 ) 287 )
286 elif action == self._j.A_DESTROY: 288 elif action == self._j.A_DESTROY:
287 pass 289 pass
288 else: 290 else: