Prevent narrow race condition when resetting network components.
This commit is contained in:
parent
2678a00781
commit
951d4ad06f
1 changed files with 37 additions and 23 deletions
|
@ -95,15 +95,18 @@ public class ApplicationDependencies {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @NonNull SignalServiceAccountManager getSignalServiceAccountManager() {
|
public static @NonNull SignalServiceAccountManager getSignalServiceAccountManager() {
|
||||||
if (accountManager == null) {
|
SignalServiceAccountManager local = accountManager;
|
||||||
synchronized (LOCK) {
|
|
||||||
if (accountManager == null) {
|
if (local != null) {
|
||||||
accountManager = provider.provideSignalServiceAccountManager();
|
return local;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return accountManager;
|
synchronized (LOCK) {
|
||||||
|
if (accountManager == null) {
|
||||||
|
accountManager = provider.provideSignalServiceAccountManager();
|
||||||
|
}
|
||||||
|
return accountManager;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @NonNull GroupsV2Authorization getGroupsV2Authorization() {
|
public static @NonNull GroupsV2Authorization getGroupsV2Authorization() {
|
||||||
|
@ -152,6 +155,12 @@ public class ApplicationDependencies {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @NonNull SignalServiceMessageSender getSignalServiceMessageSender() {
|
public static @NonNull SignalServiceMessageSender getSignalServiceMessageSender() {
|
||||||
|
SignalServiceMessageSender local = messageSender;
|
||||||
|
|
||||||
|
if (local != null) {
|
||||||
|
return local;
|
||||||
|
}
|
||||||
|
|
||||||
synchronized (LOCK) {
|
synchronized (LOCK) {
|
||||||
if (messageSender == null) {
|
if (messageSender == null) {
|
||||||
messageSender = provider.provideSignalServiceMessageSender();
|
messageSender = provider.provideSignalServiceMessageSender();
|
||||||
|
@ -161,21 +170,23 @@ public class ApplicationDependencies {
|
||||||
IncomingMessageObserver.getUnidentifiedPipe(),
|
IncomingMessageObserver.getUnidentifiedPipe(),
|
||||||
TextSecurePreferences.isMultiDevice(application));
|
TextSecurePreferences.isMultiDevice(application));
|
||||||
}
|
}
|
||||||
|
return messageSender;
|
||||||
}
|
}
|
||||||
|
|
||||||
return messageSender;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @NonNull SignalServiceMessageReceiver getSignalServiceMessageReceiver() {
|
public static @NonNull SignalServiceMessageReceiver getSignalServiceMessageReceiver() {
|
||||||
if (messageReceiver == null) {
|
SignalServiceMessageReceiver local = messageReceiver;
|
||||||
synchronized (LOCK) {
|
|
||||||
if (messageReceiver == null) {
|
if (local != null) {
|
||||||
messageReceiver = provider.provideSignalServiceMessageReceiver();
|
return local;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return messageReceiver;
|
synchronized (LOCK) {
|
||||||
|
if (messageReceiver == null) {
|
||||||
|
messageReceiver = provider.provideSignalServiceMessageReceiver();
|
||||||
|
}
|
||||||
|
return messageReceiver;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void resetSignalServiceMessageReceiver() {
|
public static void resetSignalServiceMessageReceiver() {
|
||||||
|
@ -301,15 +312,18 @@ public class ApplicationDependencies {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @NonNull IncomingMessageObserver getIncomingMessageObserver() {
|
public static @NonNull IncomingMessageObserver getIncomingMessageObserver() {
|
||||||
if (incomingMessageObserver == null) {
|
IncomingMessageObserver local = incomingMessageObserver;
|
||||||
synchronized (LOCK) {
|
|
||||||
if (incomingMessageObserver == null) {
|
if (local != null) {
|
||||||
incomingMessageObserver = provider.provideIncomingMessageObserver();
|
return local;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return incomingMessageObserver;
|
synchronized (LOCK) {
|
||||||
|
if (incomingMessageObserver == null) {
|
||||||
|
incomingMessageObserver = provider.provideIncomingMessageObserver();
|
||||||
|
}
|
||||||
|
return incomingMessageObserver;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @NonNull TrimThreadsByDateManager getTrimThreadsByDateManager() {
|
public static @NonNull TrimThreadsByDateManager getTrimThreadsByDateManager() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue