diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java index df9adb76..b550ffaa 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java @@ -23,11 +23,15 @@ public class PinHelper { public void setRegistrationLockPin(String pin, MasterKey masterKey) throws IOException { IOException exception = null; + var setPinSuccessfully = false; for (final var secureValueRecovery : secureValueRecoveries) { try { final var backupResponse = secureValueRecovery.setPin(pin, masterKey).execute(); switch (backupResponse) { - case SecureValueRecovery.BackupResponse.Success success -> logger.trace("PIN set successfully"); + case SecureValueRecovery.BackupResponse.Success success -> { + setPinSuccessfully = true; + logger.trace("PIN set successfully"); + } case SecureValueRecovery.BackupResponse.ServerRejected serverRejected -> logger.warn("Backup svr failed: ServerRejected"); case SecureValueRecovery.BackupResponse.EnclaveNotFound enclaveNotFound -> @@ -43,7 +47,7 @@ public class PinHelper { exception = e; } } - if (exception != null) { + if (!setPinSuccessfully && exception != null) { throw exception; } } @@ -54,11 +58,13 @@ public class PinHelper { public void removeRegistrationLockPin() throws IOException { IOException exception = null; + var removedPinSuccessfully = false; for (final var secureValueRecovery : secureValueRecoveries) { try { final var deleteResponse = secureValueRecovery.deleteData(); switch (deleteResponse) { case SecureValueRecovery.DeleteResponse.Success success -> { + removedPinSuccessfully = true; } case SecureValueRecovery.DeleteResponse.ServerRejected serverRejected -> logger.warn("Delete svr2 failed: ServerRejected"); @@ -73,7 +79,7 @@ public class PinHelper { exception = e; } } - if (exception != null) { + if (!removedPinSuccessfully && exception != null) { throw exception; } }