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:
parent
fcbfcb1bbc
commit
610f3b165b
@ -283,7 +283,9 @@ class BaseBroker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (connectionState === 'failed' || connectionState === 'closed') {
|
if (connectionState === 'failed' || connectionState === 'closed') {
|
||||||
|
if (this.webRtcPeer?.peerConnection) {
|
||||||
this.webRtcPeer.peerConnection.onconnectionstatechange = null;
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user