From f3b3c880d0629db1155279a7856d0fc601938e65 Mon Sep 17 00:00:00 2001 From: David Langley Date: Thu, 2 Dec 2021 18:35:51 +0000 Subject: [PATCH 1/7] select answer should be used for outgoing calls. --- .../internal/session/call/model/MxCallImpl.kt | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) 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 9fc84e6fe5..773b694b70 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 @@ -203,16 +203,19 @@ internal class MxCallImpl( override fun selectAnswer() { Timber.tag(loggerTag.value).v("select answer $callId") - if (isOutgoing) return - state = CallState.Answering - CallSelectAnswerContent( - callId = callId, - partyId = ourPartyId, - selectedPartyId = opponentPartyId?.getOrNull(), - version = MxCall.VOIP_PROTO_VERSION.toString() - ) - .let { createEventAndLocalEcho(type = EventType.CALL_SELECT_ANSWER, roomId = roomId, content = it.toContent()) } - .also { eventSenderProcessor.postEvent(it) } + if (isOutgoing) { + // This is an outgoing call, select the remote client that answered. + // state is still DIALING. + CallSelectAnswerContent( + callId = callId, + partyId = ourPartyId, + selectedPartyId = opponentPartyId?.getOrNull(), + version = MxCall.VOIP_PROTO_VERSION.toString() + ) + .let { createEventAndLocalEcho(type = EventType.CALL_SELECT_ANSWER, roomId = roomId, content = it.toContent()) } + .also { eventSenderProcessor.postEvent(it) } + } + } override suspend fun transfer(targetUserId: String, From 90f2e2c32ec5cff286255152abffb5cc3e9c7422 Mon Sep 17 00:00:00 2001 From: David Langley Date: Fri, 3 Dec 2021 11:17:47 +0000 Subject: [PATCH 2/7] Create 4621.bugfix --- changelog.d/4621.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/4621.bugfix diff --git a/changelog.d/4621.bugfix b/changelog.d/4621.bugfix new file mode 100644 index 0000000000..2bc21e8f8e --- /dev/null +++ b/changelog.d/4621.bugfix @@ -0,0 +1 @@ +Fix for outgoing voip call via sip bridge failing after 1 minute. \ No newline at end of file From bf8b485e2c4badf6d1959b79dc99fa09c30f7d25 Mon Sep 17 00:00:00 2001 From: David Langley Date: Fri, 3 Dec 2021 11:24:40 +0000 Subject: [PATCH 3/7] lint --- .../matrix/android/sdk/internal/session/call/model/MxCallImpl.kt | 1 - 1 file changed, 1 deletion(-) 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 773b694b70..acfb96c8dd 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 @@ -215,7 +215,6 @@ internal class MxCallImpl( .let { createEventAndLocalEcho(type = EventType.CALL_SELECT_ANSWER, roomId = roomId, content = it.toContent()) } .also { eventSenderProcessor.postEvent(it) } } - } override suspend fun transfer(targetUserId: String, From 0cf50e88e9d8e0e3e5214f0d1f1686d088bf1db5 Mon Sep 17 00:00:00 2001 From: David Langley Date: Fri, 3 Dec 2021 11:28:49 +0000 Subject: [PATCH 4/7] Keep guard pattern --- .../internal/session/call/model/MxCallImpl.kt | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) 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 acfb96c8dd..5322dfc576 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 @@ -203,18 +203,19 @@ internal class MxCallImpl( override fun selectAnswer() { Timber.tag(loggerTag.value).v("select answer $callId") - if (isOutgoing) { - // This is an outgoing call, select the remote client that answered. - // state is still DIALING. - CallSelectAnswerContent( - callId = callId, - partyId = ourPartyId, - selectedPartyId = opponentPartyId?.getOrNull(), - version = MxCall.VOIP_PROTO_VERSION.toString() - ) - .let { createEventAndLocalEcho(type = EventType.CALL_SELECT_ANSWER, roomId = roomId, content = it.toContent()) } - .also { eventSenderProcessor.postEvent(it) } + if (!isOutgoing) { + return } + // This is an outgoing call, select the remote client that answered. + // state is still DIALING. + CallSelectAnswerContent( + callId = callId, + partyId = ourPartyId, + selectedPartyId = opponentPartyId?.getOrNull(), + version = MxCall.VOIP_PROTO_VERSION.toString() + ) + .let { createEventAndLocalEcho(type = EventType.CALL_SELECT_ANSWER, roomId = roomId, content = it.toContent()) } + .also { eventSenderProcessor.postEvent(it) } } override suspend fun transfer(targetUserId: String, From de7180ef7e7d62167506a1d6dc8b08470a916dab Mon Sep 17 00:00:00 2001 From: David Langley Date: Fri, 3 Dec 2021 11:30:28 +0000 Subject: [PATCH 5/7] And remove braces --- .../android/sdk/internal/session/call/model/MxCallImpl.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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 5322dfc576..ce6583edf2 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 @@ -203,9 +203,8 @@ internal class MxCallImpl( override fun selectAnswer() { Timber.tag(loggerTag.value).v("select answer $callId") - if (!isOutgoing) { - return - } + if (!isOutgoing) return + // This is an outgoing call, select the remote client that answered. // state is still DIALING. CallSelectAnswerContent( From cd7345aa6b16e4269ef4e027205208fd3153cfe7 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 3 Dec 2021 13:54:05 +0100 Subject: [PATCH 6/7] Removing trailing space --- .../matrix/android/sdk/internal/session/call/model/MxCallImpl.kt | 1 - 1 file changed, 1 deletion(-) 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 ce6583edf2..1f89c39f29 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 @@ -204,7 +204,6 @@ internal class MxCallImpl( override fun selectAnswer() { Timber.tag(loggerTag.value).v("select answer $callId") if (!isOutgoing) return - // This is an outgoing call, select the remote client that answered. // state is still DIALING. CallSelectAnswerContent( From 767ead019a6983d7a87a0078a240c5ad83ab4f2d Mon Sep 17 00:00:00 2001 From: David Langley Date: Fri, 3 Dec 2021 15:13:06 +0000 Subject: [PATCH 7/7] Add warning if unexpected state. --- .../android/sdk/internal/session/call/model/MxCallImpl.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 1f89c39f29..cda513e9d2 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 @@ -205,7 +205,9 @@ internal class MxCallImpl( Timber.tag(loggerTag.value).v("select answer $callId") if (!isOutgoing) return // This is an outgoing call, select the remote client that answered. - // state is still DIALING. + if (state != CallState.Dialing) { + Timber.tag(loggerTag.value).w("Expected state is CallState.Dialing got $state.") + } CallSelectAnswerContent( callId = callId, partyId = ourPartyId,