Fake an AgentCircuitData if none is available rather than crashing out
parent
8cca9fe23c
commit
4a6160e7ad
|
@ -5360,16 +5360,38 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ScenePresence presence = GetScenePresence(agentID);
|
||||||
|
IClientAPI client = null;
|
||||||
|
AgentCircuitData aCircuit = null;
|
||||||
|
|
||||||
|
if (presence != null)
|
||||||
|
{
|
||||||
|
client = presence.ControllingClient;
|
||||||
|
if (client != null)
|
||||||
|
aCircuit = client.RequestClientInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
// We may be called before there is a presence or a client.
|
||||||
|
// Fake AgentCircuitData to keep IAuthorizationModule smiling
|
||||||
|
if (client == null)
|
||||||
|
{
|
||||||
|
aCircuit = new AgentCircuitData();
|
||||||
|
aCircuit.AgentID = agentID;
|
||||||
|
aCircuit.firstname = String.Empty;
|
||||||
|
aCircuit.lastname = String.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!AuthorizeUser(GetScenePresence(agentID).ControllingClient.RequestClientInfo(), out reason))
|
if (!AuthorizeUser(aCircuit, out reason))
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[SCENE]: Denying access for {0}", agentID);
|
// m_log.DebugFormat("[SCENE]: Denying access for {0}", agentID);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
m_log.DebugFormat("[SCENE]: Exception authorizing agent: {0} "+ e.StackTrace, e.Message);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue