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:
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user