Merge branch 'master' into careminster

Conflicts:
	OpenSim/Region/Framework/Scenes/Scene.cs
avinationmerge
Melanie 2013-05-06 23:42:39 +01:00
commit e94b240f3d
1 changed files with 18 additions and 5 deletions

View File

@ -3885,7 +3885,13 @@ namespace OpenSim.Region.Framework.Scenes
lock (agent) lock (agent)
{ {
//On login test land permisions // Optimistic: add or update the circuit data with the new agent circuit data and teleport flags.
// We need the circuit data here for some of the subsequent checks. (groups, for example)
// If the checks fail, we remove the circuit.
agent.teleportFlags = teleportFlags;
m_authenticateHandler.AddNewCircuit(agent.circuitcode, agent);
// On login test land permisions
if (vialogin) if (vialogin)
{ {
IUserAccountCacheModule cache = RequestModuleInterface<IUserAccountCacheModule>(); IUserAccountCacheModule cache = RequestModuleInterface<IUserAccountCacheModule>();
@ -3894,6 +3900,7 @@ namespace OpenSim.Region.Framework.Scenes
if (!TestLandRestrictions(agent.AgentID, out reason, ref agent.startpos.X, ref agent.startpos.Y)) if (!TestLandRestrictions(agent.AgentID, out reason, ref agent.startpos.X, ref agent.startpos.Y))
{ {
m_log.DebugFormat("[CONNECTION BEGIN]: Denying access to {0} due to no land access", agent.AgentID.ToString()); m_log.DebugFormat("[CONNECTION BEGIN]: Denying access to {0} due to no land access", agent.AgentID.ToString());
m_authenticateHandler.RemoveCircuit(agent.circuitcode);
return false; return false;
} }
} }
@ -3905,11 +3912,17 @@ namespace OpenSim.Region.Framework.Scenes
try try
{ {
if (!VerifyUserPresence(agent, out reason)) if (!VerifyUserPresence(agent, out reason))
{
m_authenticateHandler.RemoveCircuit(agent.circuitcode);
return false; return false;
} catch (Exception e) }
}
catch (Exception e)
{ {
m_log.ErrorFormat( m_log.ErrorFormat(
"[SCENE]: Exception verifying presence {0}{1}", e.Message, e.StackTrace); "[SCENE]: Exception verifying presence {0}{1}", e.Message, e.StackTrace);
m_authenticateHandler.RemoveCircuit(agent.circuitcode);
return false; return false;
} }
} }
@ -3922,6 +3935,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
if (!AuthorizeUser(agent, out reason)) if (!AuthorizeUser(agent, out reason))
{ {
m_authenticateHandler.RemoveCircuit(agent.circuitcode);
return false; return false;
} }
} }
@ -3930,6 +3944,8 @@ namespace OpenSim.Region.Framework.Scenes
{ {
m_log.ErrorFormat( m_log.ErrorFormat(
"[SCENE]: Exception authorizing user {0}{1}", e.Message, e.StackTrace); "[SCENE]: Exception authorizing user {0}{1}", e.Message, e.StackTrace);
m_authenticateHandler.RemoveCircuit(agent.circuitcode);
return false; return false;
} }
@ -3959,9 +3975,6 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
// In all cases, add or update the circuit data with the new agent circuit data and teleport flags
agent.teleportFlags = teleportFlags;
m_authenticateHandler.AddNewCircuit(agent.circuitcode, agent);
if (CapsModule != null) if (CapsModule != null)
{ {