]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/manager/ProvisioningManager.java
Update libsignal
[signal-cli] / src / main / java / org / asamk / signal / manager / ProvisioningManager.java
index 4195e8af8f4d05428c623e732937da2d04ea2186..0c26cf77964ffe4ebed3a1994ed402d62ff846a8 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2015-2020 AsamK and contributors
+  Copyright (C) 2015-2021 AsamK and contributors
 
   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -20,6 +20,8 @@ import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.util.KeyUtils;
 import org.signal.zkgroup.InvalidInputException;
 import org.signal.zkgroup.profiles.ProfileKey;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.whispersystems.libsignal.IdentityKeyPair;
 import org.whispersystems.libsignal.InvalidKeyException;
 import org.whispersystems.libsignal.util.KeyHelper;
@@ -38,6 +40,8 @@ import java.util.concurrent.TimeoutException;
 
 public class ProvisioningManager {
 
+    private final static Logger logger = LoggerFactory.getLogger(ProvisioningManager.class);
+
     private final PathConfig pathConfig;
     private final SignalServiceConfiguration serviceConfiguration;
     private final String userAgent;
@@ -66,6 +70,7 @@ public class ProvisioningManager {
                 new DynamicCredentialsProvider(null, null, password, null, SignalServiceAddress.DEFAULT_DEVICE_ID),
                 userAgent,
                 groupsV2Operations,
+                ServiceConfig.AUTOMATIC_NETWORK_RETRY,
                 timer);
     }
 
@@ -117,15 +122,28 @@ public class ProvisioningManager {
 
             try (Manager m = new Manager(account, pathConfig, serviceConfiguration, userAgent)) {
 
-                m.refreshPreKeys();
-
-                m.requestSyncGroups();
-                m.requestSyncContacts();
-                m.requestSyncBlocked();
-                m.requestSyncConfiguration();
-
-                m.saveAccount();
+                try {
+                    m.refreshPreKeys();
+                } catch (Exception e) {
+                    logger.error("Failed to refresh prekeys.");
+                    throw e;
+                }
+
+                try {
+                    m.requestSyncGroups();
+                    m.requestSyncContacts();
+                    m.requestSyncBlocked();
+                    m.requestSyncConfiguration();
+                    m.requestSyncKeys();
+                } catch (Exception e) {
+                    logger.error("Failed to request sync messages from linked device.");
+                    throw e;
+                }
+
+                m.close(false);
             }
+
+            account.save();
         }
 
         return username;