diff options
author | Justin Clark-Casey (justincc) | 2013-09-25 18:45:56 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2013-09-26 20:11:05 +0100 |
commit | 0114c8bd15f46746c3537e807262ba3533f0a6e1 (patch) | |
tree | 43e7560e547dda2256153318ffdaea68612b0cf8 /OpenSim/Region/Framework/Scenes | |
parent | Reinsert 200ms sleep accidentally removed in commit 7dbc93c (Wed Sep 18 21:41... (diff) | |
download | opensim-SC_OLD-0114c8bd15f46746c3537e807262ba3533f0a6e1.zip opensim-SC_OLD-0114c8bd15f46746c3537e807262ba3533f0a6e1.tar.gz opensim-SC_OLD-0114c8bd15f46746c3537e807262ba3533f0a6e1.tar.bz2 opensim-SC_OLD-0114c8bd15f46746c3537e807262ba3533f0a6e1.tar.xz |
Reinsert client.SceneAgent checks into LLUDPServer.HandleCompleteMovementIntoRegion() to fix race condition regression in commit 7dbc93c (Wed Sep 18 21:41:51 2013 +0100)
This check is necessary to close a race condition where the CompleteAgentMovement processing could proceed when the UseCircuitCode thread had added the client to the client manager but before the ScenePresence had registered to process the CompleteAgentMovement message.
This is most probably why the message appeared to get lost on a proportion of entity transfers.
A better long term solution may be to set the IClientAPI.SceneAgent property before the client is added to the manager.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index bc5a67f..3dc509b 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -2863,6 +2863,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2863 | 2863 | ||
2864 | // We must set this here so that TriggerOnNewClient and TriggerOnClientLogin can determine whether the | 2864 | // We must set this here so that TriggerOnNewClient and TriggerOnClientLogin can determine whether the |
2865 | // client is for a root or child agent. | 2865 | // client is for a root or child agent. |
2866 | // XXX: This may be better set for a new client before that client is added to the client manager. | ||
2867 | // But need to know what happens in the case where a ScenePresence is already present (and if this | ||
2868 | // actually occurs). | ||
2866 | client.SceneAgent = sp; | 2869 | client.SceneAgent = sp; |
2867 | 2870 | ||
2868 | // This is currently also being done earlier in NewUserConnection for real users to see if this | 2871 | // This is currently also being done earlier in NewUserConnection for real users to see if this |