Mercurial > libervia-backend
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: |