fix(bbb-html5): crash when stopping WebRTC peers

There's a race condition that may cause a client crash whenever a
connectionstatechange callback is cleaned up in a peer without a
valid peer connection present in our custom RTCPeerConnection wrapper.

Check for peerConnection availability in the WebRtcPeer wrapper before
trying to clean up its connectionstatechange callback.
This commit is contained in:
prlanzarin 2024-04-08 15:42:37 -03:00
parent fcbfcb1bbc
commit 610f3b165b

View File

@ -283,7 +283,9 @@ class BaseBroker {
} }
if (connectionState === 'failed' || connectionState === 'closed') { if (connectionState === 'failed' || connectionState === 'closed') {
this.webRtcPeer.peerConnection.onconnectionstatechange = null; if (this.webRtcPeer?.peerConnection) {
this.webRtcPeer.peerConnection.onconnectionstatechange = null;
}
// 1307: "ICE_STATE_FAILED", // 1307: "ICE_STATE_FAILED",
const error = BaseBroker.assembleError(1307); const error = BaseBroker.assembleError(1307);
this.onerror(error); this.onerror(error);
@ -343,7 +345,7 @@ class BaseBroker {
this.onerror = function(){}; this.onerror = function(){};
window.removeEventListener('beforeunload', this.onbeforeunload); window.removeEventListener('beforeunload', this.onbeforeunload);
if (this.webRtcPeer) { if (this.webRtcPeer?.peerConnection) {
this.webRtcPeer.peerConnection.onconnectionstatechange = null; this.webRtcPeer.peerConnection.onconnectionstatechange = null;
} }