Skip to content

Commit

Permalink
Prevent narrow race condition when resetting network components.
Browse files Browse the repository at this point in the history
  • Loading branch information
greyson-signal committed Feb 5, 2021
1 parent 2678a00 commit 951d4ad
Showing 1 changed file with 37 additions and 23 deletions.
Expand Up @@ -95,15 +95,18 @@ public static void init(@NonNull Application application, @NonNull Provider prov
}

public static @NonNull SignalServiceAccountManager getSignalServiceAccountManager() {
if (accountManager == null) {
synchronized (LOCK) {
if (accountManager == null) {
accountManager = provider.provideSignalServiceAccountManager();
}
}
SignalServiceAccountManager local = accountManager;

if (local != null) {
return local;
}

return accountManager;
synchronized (LOCK) {
if (accountManager == null) {
accountManager = provider.provideSignalServiceAccountManager();
}
return accountManager;
}
}

public static @NonNull GroupsV2Authorization getGroupsV2Authorization() {
Expand Down Expand Up @@ -152,6 +155,12 @@ public static void init(@NonNull Application application, @NonNull Provider prov
}

public static @NonNull SignalServiceMessageSender getSignalServiceMessageSender() {
SignalServiceMessageSender local = messageSender;

if (local != null) {
return local;
}

synchronized (LOCK) {
if (messageSender == null) {
messageSender = provider.provideSignalServiceMessageSender();
Expand All @@ -161,21 +170,23 @@ public static void init(@NonNull Application application, @NonNull Provider prov
IncomingMessageObserver.getUnidentifiedPipe(),
TextSecurePreferences.isMultiDevice(application));
}
return messageSender;
}

return messageSender;
}

public static @NonNull SignalServiceMessageReceiver getSignalServiceMessageReceiver() {
if (messageReceiver == null) {
synchronized (LOCK) {
if (messageReceiver == null) {
messageReceiver = provider.provideSignalServiceMessageReceiver();
}
}
SignalServiceMessageReceiver local = messageReceiver;

if (local != null) {
return local;
}

return messageReceiver;
synchronized (LOCK) {
if (messageReceiver == null) {
messageReceiver = provider.provideSignalServiceMessageReceiver();
}
return messageReceiver;
}
}

public static void resetSignalServiceMessageReceiver() {
Expand Down Expand Up @@ -301,15 +312,18 @@ public static void resetNetworkConnectionsAfterProxyChange() {
}

public static @NonNull IncomingMessageObserver getIncomingMessageObserver() {
if (incomingMessageObserver == null) {
synchronized (LOCK) {
if (incomingMessageObserver == null) {
incomingMessageObserver = provider.provideIncomingMessageObserver();
}
}
IncomingMessageObserver local = incomingMessageObserver;

if (local != null) {
return local;
}

return incomingMessageObserver;
synchronized (LOCK) {
if (incomingMessageObserver == null) {
incomingMessageObserver = provider.provideIncomingMessageObserver();
}
return incomingMessageObserver;
}
}

public static @NonNull TrimThreadsByDateManager getTrimThreadsByDateManager() {
Expand Down

0 comments on commit 951d4ad

Please sign in to comment.