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
|
// from interface ClientResolutionListener
|
||||||
public void clientResolved (Name username, ClientObject clobj)
|
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
|
// if our connection was closed while we were resolving our client object, then just
|
||||||
// abandon ship
|
// abandon ship
|
||||||
if (getConnection() == null) {
|
if (getConnection() == null) {
|
||||||
log.info("Session ended before client object could be resolved: " + this + ".");
|
log.info("Session ended before client object could be resolved: " + this + ".");
|
||||||
|
endSession();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// we'll be keeping this bad boy
|
|
||||||
_clobj = clobj;
|
|
||||||
|
|
||||||
// finish up our regular business
|
// finish up our regular business
|
||||||
sessionWillStart();
|
sessionWillStart();
|
||||||
|
|||||||
Reference in New Issue
Block a user