summaryrefslogtreecommitdiffstats
path: root/emailsync
diff options
context:
space:
mode:
authorMarc Blank <mblank@google.com>2012-07-23 10:14:06 -0700
committerMarc Blank <mblank@google.com>2012-07-23 10:17:05 -0700
commit98497ec7f66d1c1c173abff3b8aec11451f94987 (patch)
treec7222497414b8edc5090cdb749190699bf0074c6 /emailsync
parent70744d63330dc4b5c51cf1b192173e72d6910779 (diff)
downloadandroid_packages_apps_Email-98497ec7f66d1c1c173abff3b8aec11451f94987.tar.gz
android_packages_apps_Email-98497ec7f66d1c1c173abff3b8aec11451f94987.tar.bz2
android_packages_apps_Email-98497ec7f66d1c1c173abff3b8aec11451f94987.zip
Prevent ConcurrentModificationException in SyncManager
Bug: 6856652 Change-Id: I1a264844cbab159505b4b3ebd32716a469517f0a
Diffstat (limited to 'emailsync')
-rw-r--r--emailsync/src/com/android/emailsync/SyncManager.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/emailsync/src/com/android/emailsync/SyncManager.java b/emailsync/src/com/android/emailsync/SyncManager.java
index 7cb826ea0..0f1ed3b0c 100644
--- a/emailsync/src/com/android/emailsync/SyncManager.java
+++ b/emailsync/src/com/android/emailsync/SyncManager.java
@@ -1214,6 +1214,7 @@ public abstract class SyncManager extends Service implements Runnable {
private void stopPing(long accountId) {
// Go through our active mailboxes looking for the right one
synchronized (sSyncLock) {
+ AbstractSyncService serviceToReset = null;
for (long mailboxId: mServiceMap.keySet()) {
Mailbox m = Mailbox.restoreMailboxWithId(this, mailboxId);
if (m != null) {
@@ -1221,11 +1222,14 @@ public abstract class SyncManager extends Service implements Runnable {
if (m.mAccountKey == accountId && serverId != null &&
m.mType == Mailbox.TYPE_EAS_ACCOUNT_MAILBOX) {
// Here's our account mailbox; reset him (stopping pings)
- AbstractSyncService svc = mServiceMap.get(mailboxId);
- svc.reset();
+ serviceToReset = mServiceMap.get(mailboxId);
+ break;
}
}
}
+ if (serviceToReset != null) {
+ serviceToReset.reset();
+ }
}
}