mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-28 05:35:44 +00:00
Update SVRB error handling.
This commit is contained in:
committed by
Jeffrey Starke
parent
03c6094ea3
commit
dfdadc9d7a
@@ -2090,15 +2090,23 @@ object BackupRepository {
|
||||
result.data.forwardSecrecyToken
|
||||
}
|
||||
is SvrBApi.RestoreResult.NetworkError -> {
|
||||
return RemoteRestoreResult.NetworkError.logW(TAG, "[remoteRestore] Network error during SVRB.", result.exception)
|
||||
Log.w(TAG, "[remoteRestore] Network error during SVRB.", result.exception)
|
||||
return RemoteRestoreResult.NetworkError
|
||||
}
|
||||
is SvrBApi.RestoreResult.RestoreFailedError,
|
||||
SvrBApi.RestoreResult.InvalidDataError -> {
|
||||
Log.w(TAG, "[remoteRestore] Permanent SVRB error! $result")
|
||||
return RemoteRestoreResult.PermanentSvrBFailure
|
||||
}
|
||||
SvrBApi.RestoreResult.DataMissingError,
|
||||
is SvrBApi.RestoreResult.RestoreFailedError,
|
||||
is SvrBApi.RestoreResult.SvrError,
|
||||
is SvrBApi.RestoreResult.UnknownError -> {
|
||||
is SvrBApi.RestoreResult.SvrError -> {
|
||||
Log.w(TAG, "[remoteRestore] Failed to fetch SVRB data: $result")
|
||||
return RemoteRestoreResult.Failure
|
||||
}
|
||||
is SvrBApi.RestoreResult.UnknownError -> {
|
||||
Log.e(TAG, "[remoteRestore] Unknown SVRB result! Crashing.", result.throwable)
|
||||
throw result.throwable
|
||||
}
|
||||
}
|
||||
|
||||
val self = Recipient.self()
|
||||
|
||||
@@ -249,7 +249,7 @@ class InternalBackupPlaygroundViewModel : ViewModel() {
|
||||
|
||||
val forwardSecrecyToken = when (val result = SignalNetwork.svrB.restore(svrBAuth, SignalStore.backup.messageBackupKey, forwardSecrecyMetadata)) {
|
||||
is SvrBApi.RestoreResult.Success -> result.data.forwardSecrecyToken
|
||||
else -> throw IOException("Failed to read forward secrecy metadata!")
|
||||
else -> throw IOException("Failed to read forward secrecy metadata! $result")
|
||||
}
|
||||
|
||||
val encryptedStream = tempBackupFile.inputStream().apply {
|
||||
|
||||
@@ -166,8 +166,13 @@ class BackupMessagesJob private constructor(
|
||||
|
||||
val svrBMetadata: SvrBStoreResponse = when (val result = SignalNetwork.svrB.store(auth, SignalStore.backup.messageBackupKey, backupSecretData)) {
|
||||
is SvrBApi.StoreResult.Success -> result.data
|
||||
is SvrBApi.StoreResult.NetworkError -> return Result.retry(defaultBackoff()).logW(TAG, "SVRB transient network error.", result.exception)
|
||||
is SvrBApi.StoreResult.NetworkError -> return Result.retry(result.retryAfter?.inWholeMilliseconds ?: defaultBackoff()).logW(TAG, "SVRB transient network error.", result.exception)
|
||||
is SvrBApi.StoreResult.SvrError -> return Result.retry(defaultBackoff()).logW(TAG, "SVRB error.", result.throwable)
|
||||
SvrBApi.StoreResult.InvalidDataError -> {
|
||||
Log.w(TAG, "Invalid SVRB data on the server! Clearing backup secret data and retrying.")
|
||||
SignalStore.backup.nextBackupSecretData = null
|
||||
return Result.retry(defaultBackoff())
|
||||
}
|
||||
is SvrBApi.StoreResult.UnknownError -> return Result.fatalFailure(RuntimeException(result.throwable))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user