removed some unecessary locking

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 39 
1 file changed, 19 insertions(+), 20 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -67,7 +67,6 @@ import eu.siacs.conversations.crypto.PgpEngine;
 import eu.siacs.conversations.crypto.axolotl.AxolotlService;
 import eu.siacs.conversations.crypto.axolotl.FingerprintStatus;
 import eu.siacs.conversations.crypto.axolotl.XmppAxolotlMessage;
-import eu.siacs.conversations.crypto.axolotl.XmppAxolotlSession;
 import eu.siacs.conversations.entities.Account;
 import eu.siacs.conversations.entities.Blockable;
 import eu.siacs.conversations.entities.Bookmark;
@@ -298,7 +297,7 @@ public class XmppConnectionService extends Service {
 				mOnAccountUpdate.onAccountUpdate();
 			}
 			if (account.getStatus() == Account.State.ONLINE) {
-				synchronized (XmppConnectionService.this) {
+				synchronized (mLowPingTimeoutMode) {
 					if (mLowPingTimeoutMode.remove(account.getJid().toBareJid())) {
 						Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": leaving low ping timeout mode");
 					}
@@ -336,10 +335,10 @@ public class XmppConnectionService extends Service {
 				account.pendingConferenceJoins.clear();
 				scheduleWakeUpCall(Config.PING_MAX_INTERVAL, account.getUuid().hashCode());
 			} else {
-				synchronized (XmppConnectionService.this) {
-					if (account.getStatus() == Account.State.OFFLINE || account.getStatus() == Account.State.DISABLED) {
-						resetSendingToWaiting(account);
-						if (!account.isOptionSet(Account.OPTION_DISABLED)) {
+				if (account.getStatus() == Account.State.OFFLINE || account.getStatus() == Account.State.DISABLED) {
+					resetSendingToWaiting(account);
+					if (!account.isOptionSet(Account.OPTION_DISABLED)) {
+						synchronized (mLowPingTimeoutMode) {
 							if (mLowPingTimeoutMode.contains(account.getJid().toBareJid())) {
 								Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": went into offline state during low ping mode. reconnecting now");
 								reconnectAccount(account, true, false);
@@ -348,20 +347,20 @@ public class XmppConnectionService extends Service {
 								scheduleWakeUpCall(timeToReconnect, account.getUuid().hashCode());
 							}
 						}
-					} else if (account.getStatus() == Account.State.REGISTRATION_SUCCESSFUL) {
-						databaseBackend.updateAccount(account);
-						reconnectAccount(account, true, false);
-					} else if ((account.getStatus() != Account.State.CONNECTING)
-							&& (account.getStatus() != Account.State.NO_INTERNET)) {
-						resetSendingToWaiting(account);
-						if (connection != null) {
-							int next = connection.getTimeToNextAttempt();
-							Log.d(Config.LOGTAG, account.getJid().toBareJid()
-									+ ": error connecting account. try again in "
-									+ next + "s for the "
-									+ (connection.getAttempt() + 1) + " time");
-							scheduleWakeUpCall(next, account.getUuid().hashCode());
-						}
+					}
+				} else if (account.getStatus() == Account.State.REGISTRATION_SUCCESSFUL) {
+					databaseBackend.updateAccount(account);
+					reconnectAccount(account, true, false);
+				} else if ((account.getStatus() != Account.State.CONNECTING)
+						&& (account.getStatus() != Account.State.NO_INTERNET)) {
+					resetSendingToWaiting(account);
+					if (connection != null) {
+						int next = connection.getTimeToNextAttempt();
+						Log.d(Config.LOGTAG, account.getJid().toBareJid()
+								+ ": error connecting account. try again in "
+								+ next + "s for the "
+								+ (connection.getAttempt() + 1) + " time");
+						scheduleWakeUpCall(next, account.getUuid().hashCode());
 					}
 				}
 			}