diff options
author | Justin Clark-Casey (justincc) | 2012-08-20 20:24:54 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-08-24 21:52:21 +0100 |
commit | 3b972417167e2c5d3aa7b2d390a5be68e5509dc5 (patch) | |
tree | f9422c2103cf67345324dd7d22fe2f8570231340 /OpenSim/Region/Framework/Scenes | |
parent | Fix llDialog responses so that they can be heard throughout the region. This ... (diff) | |
download | opensim-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/Scenes')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 9 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs | 2 |
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); |