diff options
| author | Hung-ying Tyan <tyanh@google.com> | 2010-10-12 15:40:24 +0800 |
|---|---|---|
| committer | Hung-ying Tyan <tyanh@google.com> | 2010-10-12 15:41:11 +0800 |
| commit | ebc886c857a702d788c2bdfb9e0b3d20746ad745 (patch) | |
| tree | b90c65f83655c6408549481ab7b7df30d54f7867 /voip | |
| parent | 4367ab00edb59f95703e4a8a0f9a1a73dbf13551 (diff) | |
| download | frameworks_base-ebc886c857a702d788c2bdfb9e0b3d20746ad745.zip frameworks_base-ebc886c857a702d788c2bdfb9e0b3d20746ad745.tar.gz frameworks_base-ebc886c857a702d788c2bdfb9e0b3d20746ad745.tar.bz2 | |
Fix SipSessionGroup from throwing ConcurrentModificationException
http://b/issue?id=3087256
Change-Id: I67df64105db7c1295649f1f3ce77f99025ce3d44
Diffstat (limited to 'voip')
| -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"); } |
