Thanks to Mr. Lundberg's insight, we have tracked down a gross oversight

in the low-level invocation services whereby after a disconnect, any
InvocationReceiver registration would be wholly ignored due to the
previous registrations being left in the receivers set and DSet refusing
to add duplicate instances of the registration. This wasn't immediately
apparent because the initial set of registrations always happens in the
same order and thus are equally useful after the reconnect and any other
registrations are removed during the normal course of affairs. But if a
user disconnects *during* a puzzle, they will leave that puzzle's
registration around and be unable to play that (or any) puzzle again until
they log off and back on.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2707 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2003-07-12 22:34:03 +00:00
parent 48c9556d18
commit 030545b8eb
@@ -1,5 +1,5 @@
//
// $Id: InvocationDirector.java,v 1.27 2003/07/11 03:13:30 mdb Exp $
// $Id: InvocationDirector.java,v 1.28 2003/07/12 22:34:03 mdb Exp $
package com.threerings.presents.client;
@@ -61,6 +61,9 @@ public class InvocationDirector
// add ourselves as an event listener
_clobj.addListener(InvocationDirector.this);
// clear out our previous registrations
_clobj.setReceivers(new DSet());
// assign a mapping to already registered receivers
assignReceiverIds();