diff options
Diffstat (limited to 'OpenSim/Region')
4 files changed, 14 insertions, 11 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 1337143..98aa563 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -284,9 +284,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
284 | return; | 284 | return; |
285 | } | 285 | } |
286 | 286 | ||
287 | if (!m_aScene.SimulationService.QueryAccess(finalDestination, sp.ControllingClient.AgentId, Vector3.Zero)) | 287 | string reason; |
288 | if (!m_aScene.SimulationService.QueryAccess(finalDestination, sp.ControllingClient.AgentId, Vector3.Zero, out reason)) | ||
288 | { | 289 | { |
289 | sp.ControllingClient.SendTeleportFailed("The destination region has refused access"); | 290 | sp.ControllingClient.SendTeleportFailed("Teleport failed: " + reason); |
290 | return; | 291 | return; |
291 | } | 292 | } |
292 | 293 | ||
@@ -323,8 +324,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
323 | agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath(); | 324 | agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath(); |
324 | } | 325 | } |
325 | 326 | ||
326 | string reason = String.Empty; | ||
327 | |||
328 | // Let's create an agent there if one doesn't exist yet. | 327 | // Let's create an agent there if one doesn't exist yet. |
329 | bool logout = false; | 328 | bool logout = false; |
330 | if (!CreateAgent(sp, reg, finalDestination, agentCircuit, teleportFlags, out reason, out logout)) | 329 | if (!CreateAgent(sp, reg, finalDestination, agentCircuit, teleportFlags, out reason, out logout)) |
@@ -778,7 +777,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
778 | 777 | ||
779 | GridRegion neighbourRegion = scene.GridService.GetRegionByPosition(scene.RegionInfo.ScopeID, (int)x, (int)y); | 778 | GridRegion neighbourRegion = scene.GridService.GetRegionByPosition(scene.RegionInfo.ScopeID, (int)x, (int)y); |
780 | 779 | ||
781 | if (!scene.SimulationService.QueryAccess(neighbourRegion, agent.ControllingClient.AgentId, newpos)) | 780 | string reason; |
781 | if (!scene.SimulationService.QueryAccess(neighbourRegion, agent.ControllingClient.AgentId, newpos, out reason)) | ||
782 | { | 782 | { |
783 | agent.ControllingClient.SendAlertMessage("Cannot region cross into banned parcel"); | 783 | agent.ControllingClient.SendAlertMessage("Cannot region cross into banned parcel"); |
784 | if (r == null) | 784 | if (r == null) |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs index 56720b7..a298b65 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs | |||
@@ -257,15 +257,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
257 | return false; | 257 | return false; |
258 | } | 258 | } |
259 | 259 | ||
260 | public bool QueryAccess(GridRegion destination, UUID id, Vector3 position) | 260 | public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string reason) |
261 | { | 261 | { |
262 | reason = "Communications failure"; | ||
262 | if (destination == null) | 263 | if (destination == null) |
263 | return false; | 264 | return false; |
264 | 265 | ||
265 | foreach (Scene s in m_sceneList) | 266 | foreach (Scene s in m_sceneList) |
266 | { | 267 | { |
267 | if (s.RegionInfo.RegionID == destination.RegionID) | 268 | if (s.RegionInfo.RegionID == destination.RegionID) |
268 | return s.QueryAccess(id, position); | 269 | return s.QueryAccess(id, position, out reason); |
269 | } | 270 | } |
270 | //m_log.Debug("[LOCAL COMMS]: region not found for QueryAccess"); | 271 | //m_log.Debug("[LOCAL COMMS]: region not found for QueryAccess"); |
271 | return false; | 272 | return false; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs index c4919b3..0c92bd1 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs | |||
@@ -239,18 +239,19 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
239 | 239 | ||
240 | } | 240 | } |
241 | 241 | ||
242 | public bool QueryAccess(GridRegion destination, UUID id, Vector3 position) | 242 | public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string reason) |
243 | { | 243 | { |
244 | reason = "Communications failure"; | ||
244 | if (destination == null) | 245 | if (destination == null) |
245 | return false; | 246 | return false; |
246 | 247 | ||
247 | // Try local first | 248 | // Try local first |
248 | if (m_localBackend.QueryAccess(destination, id, position)) | 249 | if (m_localBackend.QueryAccess(destination, id, position, out reason)) |
249 | return true; | 250 | return true; |
250 | 251 | ||
251 | // else do the remote thing | 252 | // else do the remote thing |
252 | if (!m_localBackend.IsLocalRegion(destination.RegionHandle)) | 253 | if (!m_localBackend.IsLocalRegion(destination.RegionHandle)) |
253 | return m_remoteConnector.QueryAccess(destination, id, position); | 254 | return m_remoteConnector.QueryAccess(destination, id, position, out reason); |
254 | 255 | ||
255 | return false; | 256 | return false; |
256 | 257 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 355671c..2fd6b52 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -4923,8 +4923,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
4923 | // from logging into the region, teleporting into the region | 4923 | // from logging into the region, teleporting into the region |
4924 | // or corssing the broder walking, but will NOT prevent | 4924 | // or corssing the broder walking, but will NOT prevent |
4925 | // child agent creation, thereby emulating the SL behavior. | 4925 | // child agent creation, thereby emulating the SL behavior. |
4926 | public bool QueryAccess(UUID agentID, Vector3 position) | 4926 | public bool QueryAccess(UUID agentID, Vector3 position, out string reason) |
4927 | { | 4927 | { |
4928 | reason = String.Empty; | ||
4928 | return true; | 4929 | return true; |
4929 | } | 4930 | } |
4930 | } | 4931 | } |