From e76d1a66102bfab0a3ad8680033262a662f87d39 Mon Sep 17 00:00:00 2001 From: Jamie Doornbos Date: Thu, 16 Apr 2009 17:12:15 +0000 Subject: [PATCH] Interesting... if the peer disconnects before the node object subscription completes, an NPE would fire... but could this have prevented a lock from being release. It doesn't seem likely since a lock probably can't be assigned until the subscription is complete anyway(?). But then again, maybe some information is passed prior to this. In any case, stop throwing an NPE here. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5723 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../com/threerings/presents/peer/server/PeerNode.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/java/com/threerings/presents/peer/server/PeerNode.java b/src/java/com/threerings/presents/peer/server/PeerNode.java index 5fe3ee931..6808121a1 100644 --- a/src/java/com/threerings/presents/peer/server/PeerNode.java +++ b/src/java/com/threerings/presents/peer/server/PeerNode.java @@ -193,13 +193,16 @@ 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); + if (nodeobj != null) { + String nodeName = getNodeName(); + for (ClientInfo clinfo : nodeobj.clients) { + _peermgr.clientLoggedOff(nodeName, clinfo); + } + + nodeobj.removeListener(_listener); } _peermgr.disconnectedFromPeer(this); - nodeobj.removeListener(_listener); _listener = null; nodeobj = null; }