diff --git a/lib/src/voip/call_session.dart b/lib/src/voip/call_session.dart index becb7b721..9f2fb0999 100644 --- a/lib/src/voip/call_session.dart +++ b/lib/src/voip/call_session.dart @@ -397,7 +397,12 @@ class CallSession { if (direction == CallDirection.kOutgoing) { setCallState(CallState.kConnecting); await pc!.setRemoteDescription(answer); - for (final candidate in _remoteCandidates) { + + // Copy the list before iterating because `await` can yield execution, + // allowing `_remoteCandidates` to be modified elsewhere, + // which would cause a concurrent modification error + final candidates = List.of(_remoteCandidates); + for (final candidate in candidates) { await pc!.addCandidate(candidate); } } diff --git a/lib/src/voip/models/call_events.dart b/lib/src/voip/models/call_events.dart index ffa298c9e..08226096f 100644 --- a/lib/src/voip/models/call_events.dart +++ b/lib/src/voip/models/call_events.dart @@ -70,7 +70,7 @@ class CallReplaces { } // TODO: Change to "sdp_stream_metadata" when MSC3077 is merged -const String sdpStreamMetadataKey = 'org.matrix.msc3077.sdp_stream_metadata'; +const String sdpStreamMetadataKey = 'sdp_stream_metadata'; /// https://github.com/matrix-org/matrix-doc/blob/dbkr/msc2747/proposals/2747-voip-call-transfer.md#capability-advertisment /// https://github.com/matrix-org/matrix-doc/blob/dbkr/msc2746/proposals/2746-reliable-voip.md#add-dtmf