diff options
author | Kenny Root <kenny@the-b.org> | 2009-06-16 01:45:34 +0000 |
---|---|---|
committer | Kenny Root <kenny@the-b.org> | 2009-06-16 01:45:34 +0000 |
commit | 20d84c0e94cbed9eeea71f855860c7846072f360 (patch) | |
tree | a4049667d5c272deef4d46b18f6ec35747507ad5 /src | |
parent | 68df5076fd011d56f8956b97e765c77d9ac793b9 (diff) | |
download | connectbot-20d84c0e94cbed9eeea71f855860c7846072f360.tar.gz connectbot-20d84c0e94cbed9eeea71f855860c7846072f360.tar.bz2 connectbot-20d84c0e94cbed9eeea71f855860c7846072f360.zip |
Avoid concurrent modification of bridges list when TerminalManager service is destroyed while still connected to hosts
git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@305 df292f66-193f-0410-a5fc-6d59da041ff2
Diffstat (limited to 'src')
-rw-r--r-- | src/org/connectbot/service/TerminalManager.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/org/connectbot/service/TerminalManager.java b/src/org/connectbot/service/TerminalManager.java index f7483dd..9b5f6a4 100644 --- a/src/org/connectbot/service/TerminalManager.java +++ b/src/org/connectbot/service/TerminalManager.java @@ -162,9 +162,13 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen public void onDestroy() { Log.i(TAG, "Destroying background service"); - // disconnect and dispose of any existing bridges - for(TerminalBridge bridge : bridges) - bridge.dispatchDisconnect(true); + if (bridges.size() > 0) { + TerminalBridge[] tmpBridges = bridges.toArray(new TerminalBridge[bridges.size()]); + + // disconnect and dispose of any existing bridges + for (int i = 0; i < tmpBridges.length; i++) + tmpBridges[i].dispatchDisconnect(true); + } if(hostdb != null) { hostdb.close(); |