From 380051ab07d799b99698d08325bf7690ea92073a Mon Sep 17 00:00:00 2001 From: cloudwebrtc Date: Mon, 27 Feb 2023 20:59:38 +0800 Subject: [PATCH 1/2] fix: skip invalid candidate. --- lib/src/voip/call.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/src/voip/call.dart b/lib/src/voip/call.dart index 621a9b46..d79c5bc7 100644 --- a/lib/src/voip/call.dart +++ b/lib/src/voip/call.dart @@ -44,6 +44,15 @@ class Timeouts { static const delayBeforeOfferMs = 100; } +extension RTCIceCandidateExt on RTCIceCandidate { + bool get isValid => + sdpMLineIndex != null && + sdpMid != null && + candidate != null && + sdpMid!.isNotEmpty && + candidate!.isNotEmpty; +} + /// Wrapped MediaStream, used to adapt Widget to display class WrappedMediaStream { MediaStream? stream; @@ -716,6 +725,12 @@ class CallSession { json['sdpMLineIndex']?.round() ?? 0, ); + if (!candidate.isValid) { + Logs().w( + '[VOIP] onCandidatesReceived => skip invalid candidate $candidate'); + continue; + } + if (direction == CallDirection.kOutgoing && pc != null && await pc!.getRemoteDescription() == null) { From f2e4126e0c3d99562b2fbae11ce49c010943150b Mon Sep 17 00:00:00 2001 From: cloudwebrtc Date: Mon, 27 Feb 2023 21:02:30 +0800 Subject: [PATCH 2/2] chore: update. --- lib/src/voip/call.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/src/voip/call.dart b/lib/src/voip/call.dart index d79c5bc7..3a3f087e 100644 --- a/lib/src/voip/call.dart +++ b/lib/src/voip/call.dart @@ -49,7 +49,6 @@ extension RTCIceCandidateExt on RTCIceCandidate { sdpMLineIndex != null && sdpMid != null && candidate != null && - sdpMid!.isNotEmpty && candidate!.isNotEmpty; }