Ensure the incoming call will not ring forever, in case the call is not ended by another way (#8178)

Add a safe 2 minutes timer.
This commit is contained in:
Benoit Marty 2023-10-06 10:41:15 +02:00
parent 9e74afc9b1
commit 52082a9def
2 changed files with 11 additions and 0 deletions

1
changelog.d/8178.bugfix Normal file
View File

@ -0,0 +1 @@
Ensure the incoming call will not ring forever, in case the call is not ended by another way.

View File

@ -34,6 +34,8 @@ import im.vector.app.features.call.vectorCallService
import im.vector.app.features.session.coroutineScope import im.vector.app.features.session.coroutineScope
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.asCoroutineDispatcher import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.matrix.android.sdk.api.extensions.orFalse import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.extensions.tryOrNull
import org.matrix.android.sdk.api.logger.LoggerTag import org.matrix.android.sdk.api.logger.LoggerTag
@ -386,6 +388,14 @@ class WebRtcCallManager @Inject constructor(
// Maybe increase sync freq? but how to set back to default values? // Maybe increase sync freq? but how to set back to default values?
} }
} }
// ensure the incoming call will not ring forever
sessionScope?.launch {
delay(2 * 60 * 1000 /* 2 minutes */)
if (mxCall.state is CallState.LocalRinging) {
onCallEnded(mxCall.callId, EndCallReason.INVITE_TIMEOUT, rejected = false)
}
}
} }
override fun onCallAnswerReceived(callAnswerContent: CallAnswerContent) { override fun onCallAnswerReceived(callAnswerContent: CallAnswerContent) {