From 8c7461590e726f927e9266ef794f4e5d2c55f3a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 17 Mar 2022 05:56:58 +0100 Subject: [PATCH] Fix call flags update when track is disabled MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the call flags were updated after a renegotiation the senders were checked to decide the flags to set. However, only the track attribute was checked; when a track is disabled the track is nullified in the sender and stored in "trackDisabled" instead, so the call flags were not properly set if any of the tracks was disabled when a new one was added. Note that when a local track is replaced the call flags are updated and, in that case, the right flags are used, so sometimes this issue could be masked by that. Signed-off-by: Daniel Calviño Sánchez --- src/utils/webrtc/webrtc.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/webrtc/webrtc.js b/src/utils/webrtc/webrtc.js index 2d497e19fd0..bf56c57f631 100644 --- a/src/utils/webrtc/webrtc.js +++ b/src/utils/webrtc/webrtc.js @@ -935,8 +935,8 @@ export default function initWebRtc(signaling, _callParticipantCollection, _local if (peer.pc.iceConnectionState !== 'new' && peer.pc.iceConnectionState !== 'checking') { // Update the media flags if needed, as the renegotiation could // have been caused by tracks being added or removed. - const audioSender = peer.pc.getSenders().find((sender) => sender.track && sender.track.kind === 'audio') - const videoSender = peer.pc.getSenders().find((sender) => sender.track && sender.track.kind === 'video') + const audioSender = peer.pc.getSenders().find((sender) => (sender.track && sender.track.kind === 'audio') || (sender.trackDisabled && sender.trackDisabled.kind === 'audio')) + const videoSender = peer.pc.getSenders().find((sender) => (sender.track && sender.track.kind === 'video') || (sender.trackDisabled && sender.trackDisabled.kind === 'video')) let flags = signaling.getCurrentCallFlags() if (audioSender) {