aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorDiva Canto2013-08-09 08:31:15 -0700
committerDiva Canto2013-08-09 08:31:15 -0700
commit7e01213bf2dba1f771cc49b3d27ad97e93c35961 (patch)
tree89de3641a535f8ae531b940c83bfaef70d5dc228 /OpenSim/Region
parentAmend to last commit -- remove the obsolete var from OpenSim.ini.example (diff)
downloadopensim-SC_OLD-7e01213bf2dba1f771cc49b3d27ad97e93c35961.zip
opensim-SC_OLD-7e01213bf2dba1f771cc49b3d27ad97e93c35961.tar.gz
opensim-SC_OLD-7e01213bf2dba1f771cc49b3d27ad97e93c35961.tar.bz2
opensim-SC_OLD-7e01213bf2dba1f771cc49b3d27ad97e93c35961.tar.xz
Go easy on enforcing session ids in position updates
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs33
1 files changed, 17 insertions, 16 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 503b81a..1633e07 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -4267,24 +4267,25 @@ namespace OpenSim.Region.Framework.Scenes
4267 ScenePresence childAgentUpdate = GetScenePresence(cAgentData.AgentID); 4267 ScenePresence childAgentUpdate = GetScenePresence(cAgentData.AgentID);
4268 if (childAgentUpdate != null) 4268 if (childAgentUpdate != null)
4269 { 4269 {
4270 if (childAgentUpdate.ControllingClient.SessionId == cAgentData.SessionID) 4270 if (childAgentUpdate.ControllingClient.SessionId != cAgentData.SessionID)
4271 // Only warn for now
4272 m_log.WarnFormat("[SCENE]: Attempt at updating position of agent {0} with invalid session id {1}. Neighbor running older version?",
4273 childAgentUpdate.UUID, cAgentData.SessionID);
4274
4275 // I can't imagine *yet* why we would get an update if the agent is a root agent..
4276 // however to avoid a race condition crossing borders..
4277 if (childAgentUpdate.IsChildAgent)
4271 { 4278 {
4272 // I can't imagine *yet* why we would get an update if the agent is a root agent.. 4279 uint rRegionX = (uint)(cAgentData.RegionHandle >> 40);
4273 // however to avoid a race condition crossing borders.. 4280 uint rRegionY = (((uint)(cAgentData.RegionHandle)) >> 8);
4274 if (childAgentUpdate.IsChildAgent) 4281 uint tRegionX = RegionInfo.RegionLocX;
4275 { 4282 uint tRegionY = RegionInfo.RegionLocY;
4276 uint rRegionX = (uint)(cAgentData.RegionHandle >> 40); 4283 //Send Data to ScenePresence
4277 uint rRegionY = (((uint)(cAgentData.RegionHandle)) >> 8); 4284 childAgentUpdate.ChildAgentDataUpdate(cAgentData, tRegionX, tRegionY, rRegionX, rRegionY);
4278 uint tRegionX = RegionInfo.RegionLocX; 4285 // Not Implemented:
4279 uint tRegionY = RegionInfo.RegionLocY; 4286 //TODO: Do we need to pass the message on to one of our neighbors?
4280 //Send Data to ScenePresence
4281 childAgentUpdate.ChildAgentDataUpdate(cAgentData, tRegionX, tRegionY, rRegionX, rRegionY);
4282 // Not Implemented:
4283 //TODO: Do we need to pass the message on to one of our neighbors?
4284 }
4285 } 4287 }
4286 else 4288
4287 m_log.WarnFormat("[SCENE]: Attempt at updating position of agent {0} with invalid session id {1}", childAgentUpdate.UUID, cAgentData.SessionID);
4288 return true; 4289 return true;
4289 } 4290 }
4290 4291