diff --git a/OpenSim/Region/CoreModules/World/Estate/XEstateConnector.cs b/OpenSim/Region/CoreModules/World/Estate/XEstateConnector.cs index 948c8934a9..73e706c339 100644 --- a/OpenSim/Region/CoreModules/World/Estate/XEstateConnector.cs +++ b/OpenSim/Region/CoreModules/World/Estate/XEstateConnector.cs @@ -136,15 +136,18 @@ namespace OpenSim.Region.CoreModules.World.Estate // Handle local regions locally // - foreach (Scene s in m_EstateModule.Scenes) + lock (m_EstateModule.Scenes) { - if (regions.Contains(s.RegionInfo.RegionID)) + foreach (Scene s in m_EstateModule.Scenes) { - // All regions in one estate are in the same scope. - // Use that scope. - // - ScopeID = s.RegionInfo.ScopeID; - regions.Remove(s.RegionInfo.RegionID); + if (regions.Contains(s.RegionInfo.RegionID)) + { + // All regions in one estate are in the same scope. + // Use that scope. + // + ScopeID = s.RegionInfo.ScopeID; + regions.Remove(s.RegionInfo.RegionID); + } } } diff --git a/OpenSim/Region/CoreModules/World/Estate/XEstateModule.cs b/OpenSim/Region/CoreModules/World/Estate/XEstateModule.cs index 1f099c61ad..f54ab2c13e 100644 --- a/OpenSim/Region/CoreModules/World/Estate/XEstateModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/XEstateModule.cs @@ -93,7 +93,8 @@ namespace OpenSim.Region.CoreModules.World.Estate public void AddRegion(Scene scene) { - m_Scenes.Add(scene); + lock (m_Scenes) + m_Scenes.Add(scene); scene.EventManager.OnNewClient += OnNewClient; } @@ -111,7 +112,8 @@ namespace OpenSim.Region.CoreModules.World.Estate { scene.EventManager.OnNewClient -= OnNewClient; - m_Scenes.Remove(scene); + lock (m_Scenes) + m_Scenes.Remove(scene); } public string Name