From ca8aa787051df2fa51fc57741137cd14cf3d86ca Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Fri, 28 Mar 2025 10:02:49 -0400 Subject: [PATCH] Catch additional CDS exceptions to prevent crash. --- .../whispersystems/signalservice/api/cds/CdsApi.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/cds/CdsApi.kt b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/cds/CdsApi.kt index 18ed5f76ac..a54dc53940 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/cds/CdsApi.kt +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/cds/CdsApi.kt @@ -5,6 +5,8 @@ package org.whispersystems.signalservice.api.cds +import org.signal.core.util.logging.Log +import org.signal.libsignal.net.CdsiProtocolException import org.signal.libsignal.net.Network import org.signal.libsignal.zkgroup.profiles.ProfileKey import org.whispersystems.signalservice.api.NetworkResult @@ -27,6 +29,10 @@ import java.util.function.Consumer */ class CdsApi(private val authWebSocket: SignalWebSocket.AuthenticatedWebSocket) { + companion object { + private val TAG = Log.tag(CdsApi::class) + } + /** * Get CDS authentication and then request registered users for the provided e164s. * @@ -70,7 +76,12 @@ class CdsApi(private val authWebSocket: SignalWebSocket.AuthenticatedWebSocket) when (val cause = e.cause) { is InterruptedException -> NetworkResult.NetworkError(IOException("Interrupted", cause)) is TimeoutException -> NetworkResult.NetworkError(IOException("Timed out")) - else -> throw e + is CdsiProtocolException -> NetworkResult.NetworkError(IOException("CdsiProtocol", cause)) + is CdsiInvalidTokenException -> NetworkResult.NetworkError(IOException("CdsiInvalidToken", cause)) + else -> { + Log.w(TAG, "Unexpected exception", cause) + NetworkResult.NetworkError(IOException(cause)) + } } } }