Iterate over a snapshot of the values so that we avoid concurrent modification.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4769 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2007-07-17 21:06:09 +00:00
parent 6c65d51d76
commit f68aa1d6d3
@@ -525,7 +525,7 @@ public class PeerManager
public void clientUnsubscribedFromNode (int cloid) public void clientUnsubscribedFromNode (int cloid)
{ {
_suboids.remove(cloid); _suboids.remove(cloid);
for (LockHandler handler : _locks.values()) { for (LockHandler handler : _locks.values().toArray(new LockHandler[_locks.size()])) {
if (handler.getNodeName().equals(_nodeName)) { if (handler.getNodeName().equals(_nodeName)) {
handler.clientUnsubscribed(cloid); handler.clientUnsubscribed(cloid);
} }
@@ -742,7 +742,7 @@ public class PeerManager
protected void peerDidLogoff (PeerNode peer) protected void peerDidLogoff (PeerNode peer)
{ {
// clear any locks held by that peer // clear any locks held by that peer
for (LockHandler handler : _locks.values()) { for (LockHandler handler : _locks.values().toArray(new LockHandler[_locks.size()])) {
if (handler.getNodeName().equals(peer.getNodeName())) { if (handler.getNodeName().equals(peer.getNodeName())) {
handler.clientDidLogoff(); handler.clientDidLogoff();
} }