aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Interfaces
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-05-24 00:31:14 +0100
committerJustin Clark-Casey (justincc)2012-05-24 00:31:14 +0100
commit459c7635afdbc4002cacbf5780185645a4296f6a (patch)
tree9cf90fb39bc20e9283d6702d102475db08ca53d3 /OpenSim/Region/Framework/Interfaces
parentEnvironment Module - allows Environment settings for Viewer3 warning: include... (diff)
downloadopensim-SC-459c7635afdbc4002cacbf5780185645a4296f6a.zip
opensim-SC-459c7635afdbc4002cacbf5780185645a4296f6a.tar.gz
opensim-SC-459c7635afdbc4002cacbf5780185645a4296f6a.tar.bz2
opensim-SC-459c7635afdbc4002cacbf5780185645a4296f6a.tar.xz
If an agent is still registered as 'in transit' by the source region, don't allow an immediate teleport back.
This is to help relieve a race condition when an agent teleports then immediately attempts to teleport back before the source region has properly cleaned up/demoted the old ScenePresence. This is rare in viewers but much more possible via scripting or region module. However, more needs to be done since virtually all clean up happens after the transit flag is cleared . Possibly need to add a 'cleaning up' state to in transit. This change required making the EntityTransferModule and HGEntityTransferModule per-region rather than shared, in order to allow separate transit lists. Changes were also required in LocalSimulationConnector. Tested in standalone, grid and with local and remote region crossings with attachments.
Diffstat (limited to 'OpenSim/Region/Framework/Interfaces')
-rw-r--r--OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs7
1 files changed, 7 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs
index 18e9e3c..75c44d5 100644
--- a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs
@@ -74,6 +74,13 @@ namespace OpenSim.Region.Framework.Interfaces
74 /// <param name='client'></param> 74 /// <param name='client'></param>
75 void TeleportHome(UUID id, IClientAPI client); 75 void TeleportHome(UUID id, IClientAPI client);
76 76
77 /// <summary>
78 /// Show whether the given agent is being teleported.
79 /// </summary>
80 /// <returns>true if the agent is in the process of being teleported, false otherwise.</returns>
81 /// <param name='id'>The agent ID</para></param>
82 bool IsInTransit(UUID id);
83
77 bool Cross(ScenePresence agent, bool isFlying); 84 bool Cross(ScenePresence agent, bool isFlying);
78 85
79 void AgentArrivedAtDestination(UUID agent); 86 void AgentArrivedAtDestination(UUID agent);