]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/ProvisioningManagerImpl.java
Update libsignal-service-java
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / ProvisioningManagerImpl.java
index e0f1084b92866051c0639e2aead33e20a66e3d2a..7516355570a53da8271d6c731092003076c34873 100644 (file)
@@ -37,6 +37,7 @@ import org.whispersystems.signalservice.internal.util.DynamicCredentialsProvider
 
 import java.io.IOException;
 import java.net.URI;
+import java.nio.channels.OverlappingFileLockException;
 import java.util.concurrent.TimeoutException;
 import java.util.function.Consumer;
 
@@ -78,7 +79,7 @@ class ProvisioningManagerImpl implements ProvisioningManager {
             groupsV2Operations = null;
         }
         accountManager = new SignalServiceAccountManager(serviceEnvironmentConfig.getSignalServiceConfiguration(),
-                new DynamicCredentialsProvider(null, null, password, SignalServiceAddress.DEFAULT_DEVICE_ID),
+                new DynamicCredentialsProvider(null, null, null, password, SignalServiceAddress.DEFAULT_DEVICE_ID),
                 userAgent,
                 groupsV2Operations,
                 ServiceConfig.AUTOMATIC_NETWORK_RETRY);
@@ -96,6 +97,7 @@ class ProvisioningManagerImpl implements ProvisioningManager {
         var ret = accountManager.getNewDeviceRegistration(tempIdentityKey);
         var number = ret.getNumber();
         var aci = ret.getAci();
+        var pni = ret.getPni();
 
         logger.info("Received link information from {}, linking in progress ...", number);
 
@@ -116,7 +118,7 @@ class ProvisioningManagerImpl implements ProvisioningManager {
 
         var encryptedDeviceName = deviceName == null
                 ? null
-                : DeviceNameUtil.encryptDeviceName(deviceName, ret.getIdentity().getPrivateKey());
+                : DeviceNameUtil.encryptDeviceName(deviceName, ret.getAciIdentity().getPrivateKey());
 
         logger.debug("Finishing new device registration");
         var deviceId = accountManager.finishNewDeviceRegistration(ret.getProvisioningCode(),
@@ -134,10 +136,12 @@ class ProvisioningManagerImpl implements ProvisioningManager {
                     accountPath,
                     number,
                     aci,
+                    pni,
                     password,
                     encryptedDeviceName,
                     deviceId,
-                    ret.getIdentity(),
+                    ret.getAciIdentity(),
+                    ret.getPniIdentity(),
                     registrationId,
                     profileKey,
                     TrustNewIdentity.ON_FIRST_USE);
@@ -194,6 +198,9 @@ class ProvisioningManagerImpl implements ProvisioningManager {
         } catch (IOException e) {
             logger.debug("Account in use or failed to load.", e);
             return false;
+        } catch (OverlappingFileLockException e) {
+            logger.debug("Account in use.", e);
+            return false;
         }
 
         try (signalAccount) {