aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-06-08 00:18:25 +0100
committerJustin Clark-Casey (justincc)2012-06-08 00:18:25 +0100
commitb56673c920603022fce9cb479b714f6fbd0f1311 (patch)
tree5ec835ceeba54c1658fb888bed781994a45487c5 /OpenSim/Region
parentRecord the fact that child agents can have asset transactions. (diff)
downloadopensim-SC_OLD-b56673c920603022fce9cb479b714f6fbd0f1311.zip
opensim-SC_OLD-b56673c920603022fce9cb479b714f6fbd0f1311.tar.gz
opensim-SC_OLD-b56673c920603022fce9cb479b714f6fbd0f1311.tar.bz2
opensim-SC_OLD-b56673c920603022fce9cb479b714f6fbd0f1311.tar.xz
Fix bug with "kick user" reducing agent counts by 2 instead of 1.
This is done by making the kick user command call IClientAPI.Close() rather than routing through Scene.IncomingCloseAgent(), which also called IClientAPI.Close() DisableSimulator for child agents is moved from IncomingCloseAgent() to RemoveClient(), this is not a functional change since IncomingCloseAgent() always ends up calling RemoveClient()
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Application/OpenSim.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs31
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs11
3 files changed, 24 insertions, 22 deletions
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index caba236..1d00522 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -486,10 +486,10 @@ namespace OpenSim
486 else 486 else
487 presence.ControllingClient.Kick("\nThe OpenSim manager kicked you out.\n"); 487 presence.ControllingClient.Kick("\nThe OpenSim manager kicked you out.\n");
488 488
489 // ...and close on our side 489 presence.ControllingClient.Close();
490 presence.Scene.IncomingCloseAgent(presence.UUID);
491 } 490 }
492 } 491 }
492
493 MainConsole.Instance.Output(""); 493 MainConsole.Instance.Output("");
494 } 494 }
495 495
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 939c8fa..17503b1 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -940,7 +940,7 @@ namespace OpenSim.Region.Framework.Scenes
940 else 940 else
941 { 941 {
942 m_log.InfoFormat( 942 m_log.InfoFormat(
943 "[INTERGRID]: Got notice about far away Region: {0} at ({1}, {2})", 943 "[SCENE]: Got notice about far away Region: {0} at ({1}, {2})",
944 otherRegion.RegionName, otherRegion.RegionLocX, otherRegion.RegionLocY); 944 otherRegion.RegionName, otherRegion.RegionLocX, otherRegion.RegionLocY);
945 } 945 }
946 } 946 }
@@ -3235,6 +3235,22 @@ namespace OpenSim.Region.Framework.Scenes
3235 { 3235 {
3236 isChildAgent = avatar.IsChildAgent; 3236 isChildAgent = avatar.IsChildAgent;
3237 3237
3238 // Don't do this to root agents, it's not nice for the viewer
3239 if (closeChildAgents && isChildAgent)
3240 {
3241 // Tell a single agent to disconnect from the region.
3242 IEventQueue eq = RequestModuleInterface<IEventQueue>();
3243 if (eq != null)
3244 {
3245 eq.DisableSimulator(RegionInfo.RegionHandle, avatar.UUID);
3246 }
3247 else
3248 {
3249 avatar.ControllingClient.SendShutdownConnectionNotice();
3250 }
3251 }
3252
3253 // Only applies to root agents.
3238 if (avatar.ParentID != 0) 3254 if (avatar.ParentID != 0)
3239 { 3255 {
3240 avatar.StandUp(); 3256 avatar.StandUp();
@@ -4033,19 +4049,6 @@ namespace OpenSim.Region.Framework.Scenes
4033 m_sceneGraph.removeUserCount(true); 4049 m_sceneGraph.removeUserCount(true);
4034 } 4050 }
4035 4051
4036 // Don't do this to root agents on logout, it's not nice for the viewer
4037 if (presence.IsChildAgent)
4038 {
4039 // Tell a single agent to disconnect from the region.
4040 IEventQueue eq = RequestModuleInterface<IEventQueue>();
4041 if (eq != null)
4042 {
4043 eq.DisableSimulator(RegionInfo.RegionHandle, agentID);
4044 }
4045 else
4046 presence.ControllingClient.SendShutdownConnectionNotice();
4047 }
4048
4049 presence.ControllingClient.Close(); 4052 presence.ControllingClient.Close();
4050 return true; 4053 return true;
4051 } 4054 }
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
index b8616e8..eff635b 100644
--- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
@@ -84,16 +84,16 @@ namespace OpenSim.Region.Framework.Scenes
84 if (neighbourService != null) 84 if (neighbourService != null)
85 neighbour = neighbourService.HelloNeighbour(regionhandle, region); 85 neighbour = neighbourService.HelloNeighbour(regionhandle, region);
86 else 86 else
87 m_log.DebugFormat("[SCS]: No neighbour service provided for informing neigbhours of this region"); 87 m_log.DebugFormat("[SCENE COMMUNICATION SERVICE]: No neighbour service provided for informing neigbhours of this region");
88 88
89 if (neighbour != null) 89 if (neighbour != null)
90 { 90 {
91 m_log.DebugFormat("[INTERGRID]: Successfully informed neighbour {0}-{1} that I'm here", x / Constants.RegionSize, y / Constants.RegionSize); 91 m_log.DebugFormat("[SCENE COMMUNICATION SERVICE]: Successfully informed neighbour {0}-{1} that I'm here", x / Constants.RegionSize, y / Constants.RegionSize);
92 m_scene.EventManager.TriggerOnRegionUp(neighbour); 92 m_scene.EventManager.TriggerOnRegionUp(neighbour);
93 } 93 }
94 else 94 else
95 { 95 {
96 m_log.InfoFormat("[INTERGRID]: Failed to inform neighbour {0}-{1} that I'm here.", x / Constants.RegionSize, y / Constants.RegionSize); 96 m_log.InfoFormat("[SCENE COMMUNICATION SERVICE]: Failed to inform neighbour {0}-{1} that I'm here.", x / Constants.RegionSize, y / Constants.RegionSize);
97 } 97 }
98 } 98 }
99 99
@@ -102,7 +102,7 @@ namespace OpenSim.Region.Framework.Scenes
102 //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: Sending InterRegion Notification that region is up " + region.RegionName); 102 //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: Sending InterRegion Notification that region is up " + region.RegionName);
103 103
104 List<GridRegion> neighbours = m_scene.GridService.GetNeighbours(m_scene.RegionInfo.ScopeID, m_scene.RegionInfo.RegionID); 104 List<GridRegion> neighbours = m_scene.GridService.GetNeighbours(m_scene.RegionInfo.ScopeID, m_scene.RegionInfo.RegionID);
105 m_log.DebugFormat("[INTERGRID]: Informing {0} neighbours that this region is up", neighbours.Count); 105 m_log.DebugFormat("[SCENE COMMUNICATION SERVICE]: Informing {0} neighbours that this region is up", neighbours.Count);
106 foreach (GridRegion n in neighbours) 106 foreach (GridRegion n in neighbours)
107 { 107 {
108 InformNeighbourThatRegionUpDelegate d = InformNeighboursThatRegionIsUpAsync; 108 InformNeighbourThatRegionUpDelegate d = InformNeighboursThatRegionIsUpAsync;
@@ -196,8 +196,7 @@ namespace OpenSim.Region.Framework.Scenes
196 GridRegion destination = m_scene.GridService.GetRegionByPosition(m_regionInfo.ScopeID, (int)x, (int)y); 196 GridRegion destination = m_scene.GridService.GetRegionByPosition(m_regionInfo.ScopeID, (int)x, (int)y);
197 197
198 m_log.DebugFormat( 198 m_log.DebugFormat(
199 "[INTERGRID]: Sending close agent {0} to region at {1}-{2}", 199 "[SCENE COMMUNICATION SERVICE]: Sending close agent ID {0} to {1}", agentID, destination.RegionName);
200 agentID, destination.RegionCoordX, destination.RegionCoordY);
201 200
202 m_scene.SimulationService.CloseAgent(destination, agentID); 201 m_scene.SimulationService.CloseAgent(destination, agentID);
203 } 202 }