diff options
author | Hung-ying Tyan <tyanh@google.com> | 2010-10-12 17:33:27 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-10-12 17:33:27 -0700 |
commit | 907f6f1d7d13531015b545861b93e1607d253cfd (patch) | |
tree | 35c82f7b190ff8c363c859c46d272b66a53f0e7a | |
parent | c417612a1abb6281697a9738a1a19eb8814ae8a6 (diff) | |
parent | ebc886c857a702d788c2bdfb9e0b3d20746ad745 (diff) | |
download | frameworks_base-907f6f1d7d13531015b545861b93e1607d253cfd.zip frameworks_base-907f6f1d7d13531015b545861b93e1607d253cfd.tar.gz frameworks_base-907f6f1d7d13531015b545861b93e1607d253cfd.tar.bz2 |
Merge "Fix SipSessionGroup from throwing ConcurrentModificationException" into gingerbread
-rw-r--r-- | voip/java/com/android/server/sip/SipSessionGroup.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/voip/java/com/android/server/sip/SipSessionGroup.java b/voip/java/com/android/server/sip/SipSessionGroup.java index 57b3710..b5f8d39 100644 --- a/voip/java/com/android/server/sip/SipSessionGroup.java +++ b/voip/java/com/android/server/sip/SipSessionGroup.java @@ -153,7 +153,13 @@ class SipSessionGroup implements SipListener { } synchronized void onConnectivityChanged() { - for (SipSessionImpl s : mSessionMap.values()) { + SipSessionImpl[] ss = mSessionMap.values().toArray( + new SipSessionImpl[mSessionMap.size()]); + // Iterate on the copied array instead of directly on mSessionMap to + // avoid ConcurrentModificationException being thrown when + // SipSessionImpl removes itself from mSessionMap in onError() in the + // following loop. + for (SipSessionImpl s : ss) { s.onError(SipErrorCode.DATA_CONNECTION_LOST, "data connection lost"); } |