diff --git a/lib/src/voip/call.dart b/lib/src/voip/call.dart index 621a9b46..3a3f087e 100644 --- a/lib/src/voip/call.dart +++ b/lib/src/voip/call.dart @@ -44,6 +44,14 @@ class Timeouts { static const delayBeforeOfferMs = 100; } +extension RTCIceCandidateExt on RTCIceCandidate { + bool get isValid => + sdpMLineIndex != null && + sdpMid != null && + candidate != null && + candidate!.isNotEmpty; +} + /// Wrapped MediaStream, used to adapt Widget to display class WrappedMediaStream { MediaStream? stream; @@ -716,6 +724,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) {