aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes
diff options
context:
space:
mode:
authorBlueWall2013-02-10 13:01:33 -0500
committerBlueWall2013-02-10 13:01:33 -0500
commitadedd70c352581bc447452f5835c10853c77bea8 (patch)
tree64a144c31fb0bec3828562b049dc0fdd306d0ec4 /OpenSim/Region/Framework/Scenes
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC_OLD-adedd70c352581bc447452f5835c10853c77bea8.zip
opensim-SC_OLD-adedd70c352581bc447452f5835c10853c77bea8.tar.gz
opensim-SC_OLD-adedd70c352581bc447452f5835c10853c77bea8.tar.bz2
opensim-SC_OLD-adedd70c352581bc447452f5835c10853c77bea8.tar.xz
Fix teleport/telehub issue:
Fix bug that allowed only login access to regions with mis-configured telehubs. Administrators now have teleport access when there exists a mis-configured telehub in the region. Estate owners are now placed at region center in the absence of spawnpoints instead of being denied access. Grid Gods are unrestricted. All others are denied access to the region until spawnpoints are assigned to the telehub object.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs9
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs11
2 files changed, 17 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index de3978c..9b17b7f 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -5506,8 +5506,13 @@ namespace OpenSim.Region.Framework.Scenes
5506 5506
5507 if (banned) 5507 if (banned)
5508 { 5508 {
5509 reason = "No suitable landing point found"; 5509 if(Permissions.IsAdministrator(agentID) == false || Permissions.IsGridGod(agentID) == false)
5510 return false; 5510 {
5511 reason = "No suitable landing point found";
5512 return false;
5513 }
5514 reason = "Administrative access only";
5515 return true;
5511 } 5516 }
5512 } 5517 }
5513 } 5518 }
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 6e41774..30bd715 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -4021,6 +4021,7 @@ namespace OpenSim.Region.Framework.Scenes
4021 (m_teleportFlags & TeleportFlags.ViaLocation) != 0 || 4021 (m_teleportFlags & TeleportFlags.ViaLocation) != 0 ||
4022 (m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0) 4022 (m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0)
4023 { 4023 {
4024
4024 if (GodLevel < 200 && 4025 if (GodLevel < 200 &&
4025 ((!m_scene.Permissions.IsGod(m_uuid) && 4026 ((!m_scene.Permissions.IsGod(m_uuid) &&
4026 !m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid)) || 4027 !m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid)) ||
@@ -4029,7 +4030,14 @@ namespace OpenSim.Region.Framework.Scenes
4029 { 4030 {
4030 SpawnPoint[] spawnPoints = m_scene.RegionInfo.RegionSettings.SpawnPoints().ToArray(); 4031 SpawnPoint[] spawnPoints = m_scene.RegionInfo.RegionSettings.SpawnPoints().ToArray();
4031 if (spawnPoints.Length == 0) 4032 if (spawnPoints.Length == 0)
4033 {
4034 if(m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid))
4035 {
4036 pos.X = 128.0f;
4037 pos.Y = 128.0f;
4038 }
4032 return; 4039 return;
4040 }
4033 4041
4034 int index; 4042 int index;
4035 bool selected = false; 4043 bool selected = false;
@@ -4049,7 +4057,8 @@ namespace OpenSim.Region.Framework.Scenes
4049 // SpawnPoint sp = spawnPoints[index]; 4057 // SpawnPoint sp = spawnPoints[index];
4050 4058
4051 ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y); 4059 ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y);
4052 if (land == null || land.IsEitherBannedOrRestricted(UUID)) 4060 if (spawnPoints.Length == 0)
4061 return; if (land == null || land.IsEitherBannedOrRestricted(UUID))
4053 selected = false; 4062 selected = false;
4054 else 4063 else
4055 selected = true; 4064 selected = true;