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:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user