diff --git a/src/java/com/threerings/presents/peer/server/PeerManager.java b/src/java/com/threerings/presents/peer/server/PeerManager.java index 3322f9dec..a1c5e13d0 100644 --- a/src/java/com/threerings/presents/peer/server/PeerManager.java +++ b/src/java/com/threerings/presents/peer/server/PeerManager.java @@ -1035,9 +1035,8 @@ public abstract class PeerManager */ protected void connectedToPeer (PeerNode peer) { - String nodeName = peer.getNodeName(); - // check for lock conflicts + String nodeName = peer.getNodeName(); for (NodeObject.Lock lock : peer.nodeobj.locks) { PeerManager.LockHandler handler = _locks.get(lock); if (handler != null) { @@ -1051,11 +1050,6 @@ public abstract class PeerManager droppedLock(lock); } } - - // indicate that all these clients have logged on - for (ClientInfo clinfo : peer.nodeobj.clients) { - clientLoggedOn(nodeName, clinfo); - } } /** @@ -1063,19 +1057,13 @@ public abstract class PeerManager */ protected void disconnectedFromPeer (PeerNode peer) { - String nodeName = peer.getNodeName(); - // clear any locks held by that peer + String nodeName = peer.getNodeName(); for (LockHandler handler : _locks.values().toArray(new LockHandler[_locks.size()])) { if (handler.getNodeName().equals(nodeName)) { handler.clientDidLogoff(); } } - - // indicate that these clients have left - for (ClientInfo clinfo : peer.nodeobj.clients) { - clientLoggedOff(nodeName, clinfo); - } } /** diff --git a/src/java/com/threerings/presents/peer/server/PeerNode.java b/src/java/com/threerings/presents/peer/server/PeerNode.java index dd098cba4..78ab89004 100644 --- a/src/java/com/threerings/presents/peer/server/PeerNode.java +++ b/src/java/com/threerings/presents/peer/server/PeerNode.java @@ -195,6 +195,11 @@ public class PeerNode // documentation inherited from interface ClientObserver public void clientDidLogoff (Client client) { + String nodeName = getNodeName(); + for (ClientInfo clinfo : nodeobj.clients) { + _peermgr.clientLoggedOff(nodeName, clinfo); + } + _peermgr.disconnectedFromPeer(this); nodeobj.removeListener(_listener); _listener = null; @@ -215,6 +220,11 @@ public class PeerNode nodeobj.addListener(_listener = createListener()); _peermgr.connectedToPeer(this); + + String nodeName = getNodeName(); + for (ClientInfo clinfo : nodeobj.clients) { + _peermgr.clientLoggedOn(nodeName, clinfo); + } } // documentation inherited from interface Subscriber