diff --git a/src/java/com/threerings/presents/peer/server/PeerSession.java b/src/java/com/threerings/presents/peer/server/PeerSession.java
index 4f2630100..19c2e8942 100644
--- a/src/java/com/threerings/presents/peer/server/PeerSession.java
+++ b/src/java/com/threerings/presents/peer/server/PeerSession.java
@@ -47,25 +47,13 @@ public class PeerSession extends PresentsSession
_peermgr = peermgr;
}
- /**
- * Derived classes can override this member to create derived bootstrap data classes that
- * contain extra bootstrap information, if desired.
- */
- @Override
+ @Override // from PresentsSession
protected BootstrapData createBootstrapData ()
{
return new PeerBootstrapData();
}
- /**
- * Derived classes can override this member to populate the bootstrap data with additional
- * information. They should be sure to call super.populateBootstrapData before
- * doing their own populating, however.
- *
- *
Note: This function will be called on the dobjmgr thread which means that object - * manipulations are OK, but client instance manipulations must be done carefully. - */ - @Override + @Override // from PresentsSession protected void populateBootstrapData (BootstrapData data) { super.populateBootstrapData(data); @@ -75,7 +63,7 @@ public class PeerSession extends PresentsSession pdata.nodeOid = _peermgr.getNodeObject().getOid(); } - @Override // documentation inherited + @Override // from PresentsSession protected void sessionWillStart () { super.sessionWillStart(); @@ -86,8 +74,22 @@ public class PeerSession extends PresentsSession // let the peer manager know that we're here _peermgr.peerStartedSession(this); } + + @Override // from PresentsSession + protected void sessionConnectionClosed () + { + super.sessionConnectionClosed(); - @Override // documentation inherited + // if we lose contact with our peer and we have not already ended our session, end it now; + // we don't want to wait 8 minutes for it to reconnect, there's no need to preserve its + // session state and there is need to let the peer manager know it's gone ASAP + if (_clobj != null) { + log.info("Lost connection to peer, ending session " + this + "."); + endSession(); + } + } + + @Override // from PresentsSession protected void sessionDidEnd () { super.sessionDidEnd();