diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/call/CallCandidate.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/call/CallCandidate.kt index 0d7a0d1d26..80f7d56bd4 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/call/CallCandidate.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/call/CallCandidate.kt @@ -24,13 +24,13 @@ data class CallCandidate( /** * Required. The SDP media type this candidate is intended for. */ - @Json(name = "sdpMid") val sdpMid: String, + @Json(name = "sdpMid") val sdpMid: String? = null, /** * Required. The index of the SDP 'm' line this candidate is intended for. */ - @Json(name = "sdpMLineIndex") val sdpMLineIndex: Int, + @Json(name = "sdpMLineIndex") val sdpMLineIndex: Int = 0, /** * Required. The SDP 'a' line of the candidate. */ - @Json(name = "candidate") val candidate: String + @Json(name = "candidate") val candidate: String? = null ) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/call/model/MxCallImpl.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/call/model/MxCallImpl.kt index 2103ce196a..c6ffcbcd28 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/call/model/MxCallImpl.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/call/model/MxCallImpl.kt @@ -105,6 +105,7 @@ internal class MxCallImpl( } override fun sendLocalIceCandidates(candidates: List) { + Timber.v("Send local ice canditates $callId: $candidates") CallCandidatesContent( callId = callId, partyId = ourPartyId, diff --git a/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCall.kt b/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCall.kt index 3b4efbe60a..0f5518c64c 100644 --- a/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCall.kt +++ b/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCall.kt @@ -729,6 +729,9 @@ class WebRtcCall(val mxCall: MxCall, fun onCallIceCandidateReceived(iceCandidatesContent: CallCandidatesContent) { GlobalScope.launch(dispatcher) { iceCandidatesContent.candidates.forEach { + if (it.sdpMid.isNullOrEmpty() || it.candidate.isNullOrEmpty()) { + return@forEach + } Timber.v("## VOIP onCallIceCandidateReceived for call ${mxCall.callId} sdp: ${it.candidate}") val iceCandidate = IceCandidate(it.sdpMid, it.sdpMLineIndex, it.candidate) remoteCandidateSource.onNext(iceCandidate)