From 47300bbd563f94ad42f9c46efb655b9e9662751a Mon Sep 17 00:00:00 2001 From: adel-signal Date: Tue, 29 Oct 2024 12:58:36 -0700 Subject: [PATCH] Use v2/calling/relays endpoint. --- .../service/webrtc/SignalCallManager.java | 9 +-------- .../api/SignalServiceAccountManager.java | 5 +++-- .../api/messages/calls/TurnServerInfo.java | 8 -------- .../internal/push/GetCallingRelaysResponse.kt | 17 +++++++++++++++++ .../internal/push/PushServiceSocket.java | 9 ++++----- 5 files changed, 25 insertions(+), 23 deletions(-) create mode 100644 libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/GetCallingRelaysResponse.kt diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java index 59c84a6cbc..7cabc229b8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java @@ -1027,14 +1027,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall. public void retrieveTurnServers(@NonNull RemotePeer remotePeer) { networkExecutor.execute(() -> { try { - TurnServerInfo turnServerInfo = AppDependencies.getSignalServiceAccountManager().getTurnServerInfo(); - - List turnServerInfos = new ArrayList<>(); - if (turnServerInfo != null) { - turnServerInfos.add(turnServerInfo); - turnServerInfos.addAll(turnServerInfo.getIceServers()); - } - + List turnServerInfos = AppDependencies.getSignalServiceAccountManager().getTurnServerInfo(); List iceServers = mapToIceServers(turnServerInfos); process((s, p) -> { RemotePeer activePeer = s.getCallInfoState().getActivePeer(); diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java index 31131daeea..0982f1c365 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java @@ -552,8 +552,9 @@ public class SignalServiceAccountManager { this.pushServiceSocket.removeDevice(deviceId); } - public TurnServerInfo getTurnServerInfo() throws IOException { - return this.pushServiceSocket.getTurnServerInfo(); + public List getTurnServerInfo() throws IOException { + List relays = this.pushServiceSocket.getCallingRelays().getRelays(); + return relays != null ? relays : Collections.emptyList(); } public void checkNetworkConnection() throws IOException { diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/calls/TurnServerInfo.java b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/calls/TurnServerInfo.java index 8e9f9737fc..5833d512c7 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/calls/TurnServerInfo.java +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/calls/TurnServerInfo.java @@ -3,7 +3,6 @@ package org.whispersystems.signalservice.api.messages.calls; import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Collections; import java.util.List; public class TurnServerInfo { @@ -23,9 +22,6 @@ public class TurnServerInfo { @JsonProperty private List urlsWithIps; - @JsonProperty - private List iceServers; - public String getUsername() { return username; } @@ -46,8 +42,4 @@ public class TurnServerInfo { public List getUrlsWithIps() { return urlsWithIps; } - - public List getIceServers() { - return (iceServers != null) ? iceServers : Collections.emptyList(); - } } diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/GetCallingRelaysResponse.kt b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/GetCallingRelaysResponse.kt new file mode 100644 index 0000000000..468a71dbdd --- /dev/null +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/GetCallingRelaysResponse.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2024 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.whispersystems.signalservice.internal.push + +import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.annotation.JsonProperty +import org.whispersystems.signalservice.api.messages.calls.TurnServerInfo + +/** + * Response body for GetCallingRelays + */ +data class GetCallingRelaysResponse @JsonCreator constructor( + @JsonProperty("relays") val relays: List? +) diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java index 85a6011a90..c9884c35d1 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java @@ -71,7 +71,6 @@ import org.whispersystems.signalservice.api.link.WaitForLinkedDeviceResponse; import org.whispersystems.signalservice.api.messages.SignalServiceAttachment.ProgressListener; import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentRemoteId; import org.whispersystems.signalservice.api.messages.calls.CallingResponse; -import org.whispersystems.signalservice.api.messages.calls.TurnServerInfo; import org.whispersystems.signalservice.api.messages.multidevice.DeviceInfo; import org.whispersystems.signalservice.api.payments.CurrencyConversions; import org.whispersystems.signalservice.api.profiles.ProfileAndCredential; @@ -249,7 +248,7 @@ public class PushServiceSocket { private static final String PREKEY_DEVICE_PATH = "/v2/keys/%s/%s"; private static final String PREKEY_CHECK_PATH = "/v2/keys/check"; - private static final String TURN_SERVER_INFO = "/v1/calling/relays"; + private static final String CALLING_RELAYS = "/v2/calling/relays"; private static final String PROVISIONING_CODE_PATH = "/v1/devices/provisioning/code"; private static final String PROVISIONING_MESSAGE_PATH = "/v1/provisioning/%s"; @@ -1551,9 +1550,9 @@ public class PushServiceSocket { return getAuthCredentials(PAYMENTS_AUTH_PATH); } - public TurnServerInfo getTurnServerInfo() throws IOException { - String response = makeServiceRequest(TURN_SERVER_INFO, "GET", null); - return JsonUtil.fromJson(response, TurnServerInfo.class); + public GetCallingRelaysResponse getCallingRelays() throws IOException { + String response = makeServiceRequest(CALLING_RELAYS, "GET", null); + return JsonUtil.fromJson(response, GetCallingRelaysResponse.class); } public String getStorageAuth() throws IOException {