If we just bail after a connection closes during resolution, the ClientManager still thinks we're resolved and can just resume the session if the client reconnects. Resuming fails because we don't have _clobj to resume with, so the client fails to connect over and over again until the half-connected client is flushed from ClientManager's cache several minutes later. Just clear the client out of the cache immediately instead.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4920 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -324,15 +324,17 @@ public class PresentsClient
|
||||
// from interface ClientResolutionListener
|
||||
public void clientResolved (Name username, ClientObject clobj)
|
||||
{
|
||||
// we'll be keeping this bad boy
|
||||
_clobj = clobj;
|
||||
|
||||
// if our connection was closed while we were resolving our client object, then just
|
||||
// abandon ship
|
||||
if (getConnection() == null) {
|
||||
log.info("Session ended before client object could be resolved: " + this + ".");
|
||||
endSession();
|
||||
return;
|
||||
}
|
||||
|
||||
// we'll be keeping this bad boy
|
||||
_clobj = clobj;
|
||||
|
||||
// finish up our regular business
|
||||
sessionWillStart();
|
||||
|
||||
Reference in New Issue
Block a user