aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2014-07-22 18:01:54 +0100
committerJustin Clark-Casey (justincc)2014-07-22 18:04:28 +0100
commit3a87cce2e0367a631c4ee2d9e4fae8c701bd604a (patch)
treedab2d449137e0ea7a1595a5725f8a5f17b3a9092
parentminor: convert tabs to spaces that got in on recent commit 4a9282e (diff)
downloadopensim-SC-3a87cce2e0367a631c4ee2d9e4fae8c701bd604a.zip
opensim-SC-3a87cce2e0367a631c4ee2d9e4fae8c701bd604a.tar.gz
opensim-SC-3a87cce2e0367a631c4ee2d9e4fae8c701bd604a.tar.bz2
opensim-SC-3a87cce2e0367a631c4ee2d9e4fae8c701bd604a.tar.xz
Fix recent regression in 3c6becd5 where login or hg login to variable sized regions failed with outdated simulator message.
I forgot that a null 'their version' would not be passed over the wire and ends up as an empty string instead (like older simulators). So instead pass through the correct simulator protcol version instead (SIMULATOR/0.3) when querying from login or hg login. Also removes a debug console write for agent limit accidentally left in for the same commit. Relates to mantis 7276
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs27
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs1
-rw-r--r--OpenSim/Services/HypergridService/GatekeeperService.cs2
-rw-r--r--OpenSim/Services/LLLoginService/LLLoginService.cs7
4 files changed, 17 insertions, 20 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
index 50105a6..8fd5df8 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
@@ -283,22 +283,19 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
283// s.RegionInfo.RegionName, destination.RegionHandle); 283// s.RegionInfo.RegionName, destination.RegionHandle);
284 uint size = m_scenes[destination.RegionID].RegionInfo.RegionSizeX; 284 uint size = m_scenes[destination.RegionID].RegionInfo.RegionSizeX;
285 285
286 if (theirversion != null) 286 float theirVersionNumber = 0f;
287 string[] versionComponents = theirversion.Split(new char[] { '/' });
288 if (versionComponents.Length >= 2)
289 float.TryParse(versionComponents[1], out theirVersionNumber);
290
291 // Var regions here, and the requesting simulator is in an older version.
292 // We will forbide this, because it crashes the viewers
293 if (theirVersionNumber < 0.3f && size > 256)
287 { 294 {
288 float theirVersionNumber = 0f; 295 reason = "Destination is a variable-sized region, and source is an old simulator. Consider upgrading.";
289 string[] versionComponents = theirversion.Split(new char[] { '/' }); 296 m_log.DebugFormat("[LOCAL SIMULATION CONNECTOR]: Request to access this variable-sized region from {0} simulator was denied", theirVersionNumber);
290 if (versionComponents.Length >= 2) 297 return false;
291 float.TryParse(versionComponents[1], out theirVersionNumber); 298
292
293 // Var regions here, and the requesting simulator is in an older version.
294 // We will forbide this, because it crashes the viewers
295 if (theirVersionNumber < 0.3f && size > 256)
296 {
297 reason = "Destination is a variable-sized region, and source is an old simulator. Consider upgrading.";
298 m_log.DebugFormat("[LOCAL SIMULATION CONNECTOR]: Request to access this variable-sized region from {0} simulator was denied", theirVersionNumber);
299 return false;
300
301 }
302 } 299 }
303 300
304 return m_scenes[destination.RegionID].QueryAccess(agentID, agentHomeURI, viaTeleport, position, out reason); 301 return m_scenes[destination.RegionID].QueryAccess(agentID, agentHomeURI, viaTeleport, position, out reason);
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 4bbe68b..27929c6 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -5514,7 +5514,6 @@ namespace OpenSim.Region.Framework.Scenes
5514 5514
5515 int num = m_sceneGraph.GetRootAgentCount(); 5515 int num = m_sceneGraph.GetRootAgentCount();
5516 5516
5517 Console.WriteLine("{0} {1}", num, RegionInfo.RegionSettings.AgentLimit);
5518 if (num >= RegionInfo.RegionSettings.AgentLimit) 5517 if (num >= RegionInfo.RegionSettings.AgentLimit)
5519 { 5518 {
5520 if (!Permissions.IsAdministrator(agentID)) 5519 if (!Permissions.IsAdministrator(agentID))
diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs
index 771114e..15d3305 100644
--- a/OpenSim/Services/HypergridService/GatekeeperService.cs
+++ b/OpenSim/Services/HypergridService/GatekeeperService.cs
@@ -436,7 +436,7 @@ namespace OpenSim.Services.HypergridService
436 436
437 if (!m_SimulationService.QueryAccess( 437 if (!m_SimulationService.QueryAccess(
438 destination, aCircuit.AgentID, aCircuit.ServiceURLs["HomeURI"].ToString(), 438 destination, aCircuit.AgentID, aCircuit.ServiceURLs["HomeURI"].ToString(),
439 true, aCircuit.startpos, null, out version, out reason)) 439 true, aCircuit.startpos, "SIMULATION/0.3", out version, out reason))
440 return false; 440 return false;
441 441
442 return m_SimulationService.CreateAgent(source, destination, aCircuit, (uint)loginFlag, out reason); 442 return m_SimulationService.CreateAgent(source, destination, aCircuit, (uint)loginFlag, out reason);
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs
index 264a630..0ad9f92 100644
--- a/OpenSim/Services/LLLoginService/LLLoginService.cs
+++ b/OpenSim/Services/LLLoginService/LLLoginService.cs
@@ -961,7 +961,9 @@ namespace OpenSim.Services.LLLoginService
961 { 961 {
962 string version; 962 string version;
963 963
964 if (!simConnector.QueryAccess(region, aCircuit.AgentID, null, true, aCircuit.startpos, null, out version, out reason)) 964 if (
965 !simConnector.QueryAccess(
966 region, aCircuit.AgentID, null, true, aCircuit.startpos, "SIMULATION/0.3", out version, out reason))
965 return false; 967 return false;
966 968
967 return simConnector.CreateAgent(null, region, aCircuit, (uint)flags, out reason); 969 return simConnector.CreateAgent(null, region, aCircuit, (uint)flags, out reason);
@@ -969,9 +971,8 @@ namespace OpenSim.Services.LLLoginService
969 971
970 private bool LaunchAgentIndirectly(GridRegion gatekeeper, GridRegion destination, AgentCircuitData aCircuit, IPEndPoint clientIP, out string reason) 972 private bool LaunchAgentIndirectly(GridRegion gatekeeper, GridRegion destination, AgentCircuitData aCircuit, IPEndPoint clientIP, out string reason)
971 { 973 {
972 string version;
973
974 m_log.Debug("[LLOGIN SERVICE]: Launching agent at " + destination.RegionName); 974 m_log.Debug("[LLOGIN SERVICE]: Launching agent at " + destination.RegionName);
975
975 if (m_UserAgentService.LoginAgentToGrid(null, aCircuit, gatekeeper, destination, true, out reason)) 976 if (m_UserAgentService.LoginAgentToGrid(null, aCircuit, gatekeeper, destination, true, out reason))
976 return true; 977 return true;
977 return false; 978 return false;