]> nmode's Git Repositories - signal-cli/commitdiff
Use a single PushServiceSocket
authorAsamK <asamk@gmx.de>
Wed, 8 Nov 2023 13:06:11 +0000 (14:06 +0100)
committerAsamK <asamk@gmx.de>
Thu, 9 Nov 2023 08:22:46 +0000 (09:22 +0100)
lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java
lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java

index 99bede8d30f997765a261440535511c9e4775525..cbaaaab362f80c699766b09a8d3bede5de38549c 100644 (file)
@@ -1310,6 +1310,7 @@ public class ManagerImpl implements Manager {
         executor.close();
 
         dependencies.getSignalWebSocket().disconnect();
+        dependencies.getPushServiceSocket().close();
         disposable.dispose();
 
         if (account != null) {
index 2e2cb75f6ffaa7a99a150c3532438c4ad81b7433..3b047c88f6e426ead86410c05f9235e54591bac9 100644 (file)
@@ -20,6 +20,7 @@ import org.whispersystems.signalservice.api.svr.SecureValueRecoveryV2;
 import org.whispersystems.signalservice.api.util.CredentialsProvider;
 import org.whispersystems.signalservice.api.util.UptimeSleepTimer;
 import org.whispersystems.signalservice.api.websocket.WebSocketFactory;
+import org.whispersystems.signalservice.internal.push.PushServiceSocket;
 import org.whispersystems.signalservice.internal.websocket.WebSocketConnection;
 
 import java.util.Optional;
@@ -44,6 +45,7 @@ public class SignalDependencies {
     private GroupsV2Operations groupsV2Operations;
     private ClientZkOperations clientZkOperations;
 
+    private PushServiceSocket pushServiceSocket;
     private SignalWebSocket signalWebSocket;
     private SignalServiceMessageReceiver messageReceiver;
     private SignalServiceMessageSender messageSender;
@@ -69,6 +71,10 @@ public class SignalDependencies {
     }
 
     public void resetAfterAddressChange() {
+        if (this.pushServiceSocket != null) {
+            this.pushServiceSocket.close();
+            this.pushServiceSocket = null;
+        }
         this.messageSender = null;
         this.cipher = null;
         getSignalWebSocket().forceNewWebSockets();
@@ -89,15 +95,24 @@ public class SignalDependencies {
         return sessionLock;
     }
 
-    public SignalServiceAccountManager getAccountManager() {
-        return getOrCreate(() -> accountManager,
-                () -> accountManager = new SignalServiceAccountManager(serviceEnvironmentConfig.signalServiceConfiguration(),
+    public PushServiceSocket getPushServiceSocket() {
+        return getOrCreate(() -> pushServiceSocket,
+                () -> pushServiceSocket = new PushServiceSocket(serviceEnvironmentConfig.signalServiceConfiguration(),
                         credentialsProvider,
                         userAgent,
-                        getGroupsV2Operations(),
+                        getClientZkProfileOperations(),
                         ServiceConfig.AUTOMATIC_NETWORK_RETRY));
     }
 
+    public SignalServiceAccountManager getAccountManager() {
+        return getOrCreate(() -> accountManager,
+                () -> accountManager = new SignalServiceAccountManager(getPushServiceSocket(),
+                        null,
+                        serviceEnvironmentConfig.signalServiceConfiguration(),
+                        credentialsProvider,
+                        getGroupsV2Operations()));
+    }
+
     public SignalServiceAccountManager createUnauthenticatedAccountManager(String number, String password) {
         return new SignalServiceAccountManager(getServiceEnvironmentConfig().signalServiceConfiguration(),
                 null,
@@ -162,26 +177,19 @@ public class SignalDependencies {
 
     public SignalServiceMessageReceiver getMessageReceiver() {
         return getOrCreate(() -> messageReceiver,
-                () -> messageReceiver = new SignalServiceMessageReceiver(serviceEnvironmentConfig.signalServiceConfiguration(),
-                        credentialsProvider,
-                        userAgent,
-                        getClientZkProfileOperations(),
-                        ServiceConfig.AUTOMATIC_NETWORK_RETRY));
+                () -> messageReceiver = new SignalServiceMessageReceiver(pushServiceSocket));
     }
 
     public SignalServiceMessageSender getMessageSender() {
         return getOrCreate(() -> messageSender,
-                () -> messageSender = new SignalServiceMessageSender(serviceEnvironmentConfig.signalServiceConfiguration(),
-                        credentialsProvider,
+                () -> messageSender = new SignalServiceMessageSender(credentialsProvider,
                         dataStore,
                         sessionLock,
-                        userAgent,
                         getSignalWebSocket(),
                         Optional.empty(),
-                        getClientZkProfileOperations(),
                         executor,
                         ServiceConfig.MAX_ENVELOPE_SIZE,
-                        ServiceConfig.AUTOMATIC_NETWORK_RETRY));
+                        pushServiceSocket));
     }
 
     public SecureValueRecoveryV2 getSecureValueRecoveryV2() {