diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index 77889fa..52f46f2 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | |||
@@ -194,8 +194,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
194 | } | 194 | } |
195 | } | 195 | } |
196 | 196 | ||
197 | public delegate void SendCloseChildAgentDelegate(UUID agentID, ulong regionHandle); | ||
198 | |||
197 | /// <summary> | 199 | /// <summary> |
198 | /// Closes a child agent on a given region | 200 | /// This Closes child agents on neighboring regions |
201 | /// Calls an asynchronous method to do so.. so it doesn't lag the sim. | ||
199 | /// </summary> | 202 | /// </summary> |
200 | protected void SendCloseChildAgent(UUID agentID, ulong regionHandle, string auth_token) | 203 | protected void SendCloseChildAgent(UUID agentID, ulong regionHandle, string auth_token) |
201 | { | 204 | { |
@@ -223,16 +226,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
223 | { | 226 | { |
224 | foreach (ulong handle in regionslst) | 227 | foreach (ulong handle in regionslst) |
225 | { | 228 | { |
226 | // We must take a copy here since handle is acts like a reference when used in an iterator. | ||
227 | // This leads to race conditions if directly passed to SendCloseChildAgent with more than one neighbour region. | ||
228 | ulong handleCopy = handle; | 229 | ulong handleCopy = handle; |
229 | Util.FireAndForget((o) => { SendCloseChildAgent(agentID, handleCopy, auth_code); }); | 230 | Util.FireAndForget((o) => { SendCloseChildAgent(agentID, handleCopy, auth_code); }); |
230 | } | 231 | } |
231 | } | 232 | } |
232 | 233 | ||
233 | public List<GridRegion> RequestNamedRegions(string name, int maxNumber) | 234 | public List<GridRegion> RequestNamedRegions(string name, int maxNumber) |
234 | { | 235 | { |
235 | return m_scene.GridService.GetRegionsByName(UUID.Zero, name, maxNumber); | 236 | return m_scene.GridService.GetRegionsByName(UUID.Zero, name, maxNumber); |
236 | } | 237 | } |
237 | } | 238 | } |
238 | } \ No newline at end of file | 239 | } |