Change the QUERYACCESS method to eliminate spurious access denied messages
parent
ccd6e5d071
commit
cfce0aa448
|
@ -285,9 +285,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_aScene.SimulationService.QueryAccess(finalDestination, sp.ControllingClient.AgentId, Vector3.Zero))
|
string reason;
|
||||||
|
if (!m_aScene.SimulationService.QueryAccess(finalDestination, sp.ControllingClient.AgentId, Vector3.Zero, out reason))
|
||||||
{
|
{
|
||||||
sp.ControllingClient.SendTeleportFailed("The destination region has refused access");
|
sp.ControllingClient.SendTeleportFailed("Teleport failed: " + reason);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -324,8 +325,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath();
|
agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
string reason = String.Empty;
|
|
||||||
|
|
||||||
// Let's create an agent there if one doesn't exist yet.
|
// Let's create an agent there if one doesn't exist yet.
|
||||||
bool logout = false;
|
bool logout = false;
|
||||||
if (!CreateAgent(sp, reg, finalDestination, agentCircuit, teleportFlags, out reason, out logout))
|
if (!CreateAgent(sp, reg, finalDestination, agentCircuit, teleportFlags, out reason, out logout))
|
||||||
|
@ -797,7 +796,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
GridRegion neighbourRegion = scene.GridService.GetRegionByPosition(scene.RegionInfo.ScopeID, (int)x, (int)y);
|
GridRegion neighbourRegion = scene.GridService.GetRegionByPosition(scene.RegionInfo.ScopeID, (int)x, (int)y);
|
||||||
|
|
||||||
if (!scene.SimulationService.QueryAccess(neighbourRegion, agent.ControllingClient.AgentId, newpos))
|
string reason;
|
||||||
|
if (!scene.SimulationService.QueryAccess(neighbourRegion, agent.ControllingClient.AgentId, newpos, out reason))
|
||||||
{
|
{
|
||||||
agent.ControllingClient.SendAlertMessage("Cannot region cross into banned parcel");
|
agent.ControllingClient.SendAlertMessage("Cannot region cross into banned parcel");
|
||||||
if (r == null)
|
if (r == null)
|
||||||
|
|
|
@ -257,15 +257,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool QueryAccess(GridRegion destination, UUID id, Vector3 position)
|
public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string reason)
|
||||||
{
|
{
|
||||||
|
reason = "Communications failure";
|
||||||
if (destination == null)
|
if (destination == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
foreach (Scene s in m_sceneList)
|
foreach (Scene s in m_sceneList)
|
||||||
{
|
{
|
||||||
if (s.RegionInfo.RegionID == destination.RegionID)
|
if (s.RegionInfo.RegionID == destination.RegionID)
|
||||||
return s.QueryAccess(id, position);
|
return s.QueryAccess(id, position, out reason);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -239,18 +239,19 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool QueryAccess(GridRegion destination, UUID id, Vector3 position)
|
public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string reason)
|
||||||
{
|
{
|
||||||
|
reason = "Communications failure";
|
||||||
if (destination == null)
|
if (destination == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Try local first
|
// Try local first
|
||||||
if (m_localBackend.QueryAccess(destination, id, position))
|
if (m_localBackend.QueryAccess(destination, id, position, out reason))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// else do the remote thing
|
// else do the remote thing
|
||||||
if (!m_localBackend.IsLocalRegion(destination.RegionHandle))
|
if (!m_localBackend.IsLocalRegion(destination.RegionHandle))
|
||||||
return m_remoteConnector.QueryAccess(destination, id, position);
|
return m_remoteConnector.QueryAccess(destination, id, position, out reason);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
|
@ -5145,9 +5145,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// from logging into the region, teleporting into the region
|
// from logging into the region, teleporting into the region
|
||||||
// or corssing the broder walking, but will NOT prevent
|
// or corssing the broder walking, but will NOT prevent
|
||||||
// child agent creation, thereby emulating the SL behavior.
|
// child agent creation, thereby emulating the SL behavior.
|
||||||
public bool QueryAccess(UUID agentID, Vector3 position)
|
public bool QueryAccess(UUID agentID, Vector3 position, out string reason)
|
||||||
{
|
{
|
||||||
string reason;
|
reason = "You are banned from the region";
|
||||||
|
|
||||||
if (!AuthorizeUser(agentID, out reason))
|
if (!AuthorizeUser(agentID, out reason))
|
||||||
{
|
{
|
||||||
|
@ -5178,6 +5178,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (banned || restricted)
|
if (banned || restricted)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reason = String.Empty;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -346,10 +346,17 @@ namespace OpenSim.Server.Handlers.Simulation
|
||||||
GridRegion destination = new GridRegion();
|
GridRegion destination = new GridRegion();
|
||||||
destination.RegionID = regionID;
|
destination.RegionID = regionID;
|
||||||
|
|
||||||
bool result = m_SimulationService.QueryAccess(destination, id, position);
|
string reason;
|
||||||
|
bool result = m_SimulationService.QueryAccess(destination, id, position, out reason);
|
||||||
|
|
||||||
responsedata["int_response_code"] = HttpStatusCode.OK;
|
responsedata["int_response_code"] = HttpStatusCode.OK;
|
||||||
responsedata["str_response_string"] = result.ToString();
|
|
||||||
|
OSDMap resp = new OSDMap(2);
|
||||||
|
|
||||||
|
resp["success"] = OSD.FromBoolean(result);
|
||||||
|
resp["reason"] = OSD.FromString(reason);
|
||||||
|
|
||||||
|
responsedata["str_response_string"] = OSDParser.SerializeJsonString(resp);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void DoAgentGet(Hashtable request, Hashtable responsedata, UUID id, UUID regionID)
|
protected virtual void DoAgentGet(Hashtable request, Hashtable responsedata, UUID id, UUID regionID)
|
||||||
|
|
|
@ -256,8 +256,10 @@ namespace OpenSim.Services.Connectors.Simulation
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool QueryAccess(GridRegion destination, UUID id, Vector3 position)
|
public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string reason)
|
||||||
{
|
{
|
||||||
|
reason = "Failed to contact destination";
|
||||||
|
|
||||||
// m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: QueryAccess start, position={0}", position);
|
// m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: QueryAccess start, position={0}", position);
|
||||||
|
|
||||||
IPEndPoint ext = destination.ExternalEndPoint;
|
IPEndPoint ext = destination.ExternalEndPoint;
|
||||||
|
@ -283,8 +285,21 @@ namespace OpenSim.Services.Connectors.Simulation
|
||||||
m_log.Info("[REMOTE SIMULATION CONNECTOR]: The above web util error was caused by a TP to a sim that doesn't support QUERYACCESS and can be ignored");
|
m_log.Info("[REMOTE SIMULATION CONNECTOR]: The above web util error was caused by a TP to a sim that doesn't support QUERYACCESS and can be ignored");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reason = result["Message"];
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reason = "Communications failure";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSDMap resp = (OSDMap)result["_Result"];
|
||||||
|
success = resp["success"].AsBoolean();
|
||||||
|
reason = resp["reason"].AsString();
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|
|
@ -60,7 +60,7 @@ namespace OpenSim.Services.Interfaces
|
||||||
|
|
||||||
bool RetrieveAgent(GridRegion destination, UUID id, out IAgentData agent);
|
bool RetrieveAgent(GridRegion destination, UUID id, out IAgentData agent);
|
||||||
|
|
||||||
bool QueryAccess(GridRegion destination, UUID id, Vector3 position);
|
bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string reason);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Message from receiving region to departing region, telling it got contacted by the client.
|
/// Message from receiving region to departing region, telling it got contacted by the client.
|
||||||
|
|
Loading…
Reference in New Issue