Catch additional CDS exceptions to prevent crash.

This commit is contained in:
Cody Henthorne
2025-03-28 10:02:49 -04:00
parent b5987feab3
commit ca8aa78705

View File

@@ -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))
}
}
}
}