aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-08-20 20:24:54 +0100
committerJustin Clark-Casey (justincc)2012-08-24 21:52:21 +0100
commit3b972417167e2c5d3aa7b2d390a5be68e5509dc5 (patch)
treef9422c2103cf67345324dd7d22fe2f8570231340 /OpenSim/Region/Framework
parentFix llDialog responses so that they can be heard throughout the region. This ... (diff)
downloadopensim-SC_OLD-3b972417167e2c5d3aa7b2d390a5be68e5509dc5.zip
opensim-SC_OLD-3b972417167e2c5d3aa7b2d390a5be68e5509dc5.tar.gz
opensim-SC_OLD-3b972417167e2c5d3aa7b2d390a5be68e5509dc5.tar.bz2
opensim-SC_OLD-3b972417167e2c5d3aa7b2d390a5be68e5509dc5.tar.xz
Add --force flag to "kick user" console command to allow bypassing of recent race condition checks.
This is to allow a second attempt to remove an avatar even if "show connections" shows them as already inactive (i.e. close has already been attempted once). You should only attempt --force if a normal kick fails. This is partly for diagnostics as we have seen some connections occasionally remain on lbsa plaza even if they are registered as inactive. This is not a permanent solution and may not work anyway - the ultimate solution is to stop this problem from happening in the first place.
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs9
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs2
2 files changed, 7 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 40cfb72..b2592d4 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -4083,16 +4083,19 @@ namespace OpenSim.Region.Framework.Scenes
4083 /// <summary> 4083 /// <summary>
4084 /// Tell a single agent to disconnect from the region. 4084 /// Tell a single agent to disconnect from the region.
4085 /// </summary> 4085 /// </summary>
4086 /// <param name="regionHandle"></param>
4087 /// <param name="agentID"></param> 4086 /// <param name="agentID"></param>
4088 public bool IncomingCloseAgent(UUID agentID) 4087 /// <param name="force">
4088 /// Force the agent to close even if it might be in the middle of some other operation. You do not want to
4089 /// force unless you are absolutely sure that the agent is dead and a normal close is not working.
4090 /// </param>
4091 public bool IncomingCloseAgent(UUID agentID, bool force)
4089 { 4092 {
4090 //m_log.DebugFormat("[SCENE]: Processing incoming close agent for {0}", agentID); 4093 //m_log.DebugFormat("[SCENE]: Processing incoming close agent for {0}", agentID);
4091 4094
4092 ScenePresence presence = m_sceneGraph.GetScenePresence(agentID); 4095 ScenePresence presence = m_sceneGraph.GetScenePresence(agentID);
4093 if (presence != null) 4096 if (presence != null)
4094 { 4097 {
4095 presence.ControllingClient.Close(); 4098 presence.ControllingClient.Close(force);
4096 return true; 4099 return true;
4097 } 4100 }
4098 4101
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
index 5758869..5faf131 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
@@ -141,7 +141,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
141 TestScene scene = new SceneHelpers().SetupScene(); 141 TestScene scene = new SceneHelpers().SetupScene();
142 ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); 142 ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
143 143
144 scene.IncomingCloseAgent(sp.UUID); 144 scene.IncomingCloseAgent(sp.UUID, false);
145 145
146 Assert.That(scene.GetScenePresence(sp.UUID), Is.Null); 146 Assert.That(scene.GetScenePresence(sp.UUID), Is.Null);
147 Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Null); 147 Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Null);