Merge pull request #1971 from tzeitlho/turn_fix

Turn fix
This commit is contained in:
Benoit Marty 2020-08-21 16:28:52 +02:00 committed by GitHub
commit de728f6c36
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 4 deletions

View file

@ -25,6 +25,7 @@ Bugfix 🐛:
- Failed to build unique file (#1954)
- Highlighted Event when opening a permalink from another room (#1033)
- A Kick appears has "someone has made no change" (#1959)
- Renew turnserver credentials when ttl runs out
Translations 🗣:
- Add PlayStore description resources in the Triple-T format, to let Weblate handle them

View file

@ -58,18 +58,32 @@ internal class DefaultCallSignalingService @Inject constructor(
private val activeCalls = mutableListOf<MxCall>()
private var cachedTurnServerResponse: TurnServerResponse? = null
private val cachedTurnServerResponse = object {
private val MIN_TTL = 60
private val now = { System.currentTimeMillis() / 1000 }
private var expiresAt: Long = 0
var data: TurnServerResponse? = null
get() = if (expiresAt > now()) field else null
set(value) {
expiresAt = now() + (value?.ttl ?: 0) - MIN_TTL
field = value
}
}
override fun getTurnServer(callback: MatrixCallback<TurnServerResponse>): Cancelable {
if (cachedTurnServerResponse != null) {
cachedTurnServerResponse?.let { callback.onSuccess(it) }
if (cachedTurnServerResponse.data != null) {
cachedTurnServerResponse.data?.let { callback.onSuccess(it) }
return NoOpCancellable
}
return turnServerTask
.configureWith(GetTurnServerTask.Params) {
this.callback = object : MatrixCallback<TurnServerResponse> {
override fun onSuccess(data: TurnServerResponse) {
cachedTurnServerResponse = data
cachedTurnServerResponse.data = data
callback.onSuccess(data)
}