From 643982e798fad599e5f6c2e6001242f8487702b7 Mon Sep 17 00:00:00 2001 From: Charlie Groves Date: Tue, 8 Jan 2008 04:12:35 +0000 Subject: [PATCH] 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 --- src/java/com/threerings/presents/server/PresentsClient.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/java/com/threerings/presents/server/PresentsClient.java b/src/java/com/threerings/presents/server/PresentsClient.java index 267df79d1..c9e78e3dd 100644 --- a/src/java/com/threerings/presents/server/PresentsClient.java +++ b/src/java/com/threerings/presents/server/PresentsClient.java @@ -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();