From dacb2840f25e269f39e86a4cbab87224c4f8204f Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 1 Feb 2017 21:51:50 -0500 Subject: [PATCH] Avoid crashes when closing peer connection client. // FREEBIE --- Signal/src/call/PeerConnectionClient.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Signal/src/call/PeerConnectionClient.swift b/Signal/src/call/PeerConnectionClient.swift index b5207ac50..476a38fbb 100644 --- a/Signal/src/call/PeerConnectionClient.swift +++ b/Signal/src/call/PeerConnectionClient.swift @@ -339,7 +339,6 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD return setRemoteSessionDescription(remoteDescription) .then(on: PeerConnectionClient.signalingQueue) { - assert(self.peerConnection != nil) return self.negotiateAnswerSessionDescription(constraints: constraints) } } @@ -369,6 +368,12 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD return Promise { fulfill, reject in assertOnSignalingQueue() + guard self.peerConnection != nil else { + Logger.debug("\(self.TAG) \(#function) Ignoring obsolete event in terminated client") + reject(NSError(domain:"Obsolete client", code:0, userInfo:nil)) + return + } + Logger.debug("\(self.TAG) negotiating answer session.") peerConnection.answer(for: constraints, completionHandler: { (sdp: RTCSessionDescription?, error: Error?) in