aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorDiva Canto2010-06-13 19:06:22 -0700
committerDiva Canto2010-06-13 19:06:22 -0700
commit19558f380a1e9cbaff849eb15262266ea79b60d2 (patch)
tree1209b45e0beb2100d65b539db5a6ba3448ff7abb /OpenSim/Region/Framework
parentFox my changes to radmin (diff)
downloadopensim-SC-19558f380a1e9cbaff849eb15262266ea79b60d2.zip
opensim-SC-19558f380a1e9cbaff849eb15262266ea79b60d2.tar.gz
opensim-SC-19558f380a1e9cbaff849eb15262266ea79b60d2.tar.bz2
opensim-SC-19558f380a1e9cbaff849eb15262266ea79b60d2.tar.xz
Fixes the long-standing RegionUp bug! Plus lots of other cleanups related to neighbours.
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs29
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs21
2 files changed, 11 insertions, 39 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 55060c3..2ff611e 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -948,12 +948,6 @@ namespace OpenSim.Region.Framework.Scenes
948 // Let the grid service module know, so this can be cached 948 // Let the grid service module know, so this can be cached
949 m_eventManager.TriggerOnRegionUp(otherRegion); 949 m_eventManager.TriggerOnRegionUp(otherRegion);
950 950
951 RegionInfo regInfo = new RegionInfo(xcell, ycell, otherRegion.InternalEndPoint, otherRegion.ExternalHostName);
952 regInfo.RegionID = otherRegion.RegionID;
953 regInfo.RegionName = otherRegion.RegionName;
954 regInfo.ScopeID = otherRegion.ScopeID;
955 regInfo.ExternalHostName = otherRegion.ExternalHostName;
956 GridRegion r = new GridRegion(regInfo);
957 try 951 try
958 { 952 {
959 ForEachScenePresence(delegate(ScenePresence agent) 953 ForEachScenePresence(delegate(ScenePresence agent)
@@ -968,7 +962,7 @@ namespace OpenSim.Region.Framework.Scenes
968 old.Add(otherRegion.RegionHandle); 962 old.Add(otherRegion.RegionHandle);
969 agent.DropOldNeighbours(old); 963 agent.DropOldNeighbours(old);
970 if (m_teleportModule != null) 964 if (m_teleportModule != null)
971 m_teleportModule.EnableChildAgent(agent, r); 965 m_teleportModule.EnableChildAgent(agent, otherRegion);
972 } 966 }
973 } 967 }
974 ); 968 );
@@ -1518,6 +1512,7 @@ namespace OpenSim.Region.Framework.Scenes
1518 { 1512 {
1519 m_log.DebugFormat("[REGION]: Enabling logins for {0}", RegionInfo.RegionName); 1513 m_log.DebugFormat("[REGION]: Enabling logins for {0}", RegionInfo.RegionName);
1520 LoginsDisabled = false; 1514 LoginsDisabled = false;
1515 m_sceneGridService.InformNeighborsThatRegionisUp(RequestModuleInterface<INeighbourService>(), RegionInfo);
1521 } 1516 }
1522 } 1517 }
1523 } 1518 }
@@ -1802,6 +1797,8 @@ namespace OpenSim.Region.Framework.Scenes
1802 { 1797 {
1803 RegisterCommsEvents(); 1798 RegisterCommsEvents();
1804 1799
1800 m_sceneGridService.SetScene(this);
1801
1805 // These two 'commands' *must be* next to each other or sim rebooting fails. 1802 // These two 'commands' *must be* next to each other or sim rebooting fails.
1806 //m_sceneGridService.RegisterRegion(m_interregionCommsOut, RegionInfo); 1803 //m_sceneGridService.RegisterRegion(m_interregionCommsOut, RegionInfo);
1807 1804
@@ -1812,24 +1809,6 @@ namespace OpenSim.Region.Framework.Scenes
1812 throw new Exception(error); 1809 throw new Exception(error);
1813 } 1810 }
1814 1811
1815 m_sceneGridService.SetScene(this);
1816 m_sceneGridService.InformNeighborsThatRegionisUp(RequestModuleInterface<INeighbourService>(), RegionInfo);
1817
1818 //Dictionary<string, string> dGridSettings = m_sceneGridService.GetGridSettings();
1819
1820 //if (dGridSettings.ContainsKey("allow_forceful_banlines"))
1821 //{
1822 // if (dGridSettings["allow_forceful_banlines"] != "TRUE")
1823 // {
1824 // m_log.Info("[GRID]: Grid is disabling forceful parcel banlists");
1825 // EventManager.TriggerSetAllowForcefulBan(false);
1826 // }
1827 // else
1828 // {
1829 // m_log.Info("[GRID]: Grid is allowing forceful parcel banlists");
1830 // EventManager.TriggerSetAllowForcefulBan(true);
1831 // }
1832 //}
1833 } 1812 }
1834 1813
1835 /// <summary> 1814 /// <summary>
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
index bd8ccce..c675322 100644
--- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
@@ -182,24 +182,17 @@ namespace OpenSim.Region.Framework.Scenes
182 { 182 {
183 //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: Sending InterRegion Notification that region is up " + region.RegionName); 183 //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: Sending InterRegion Notification that region is up " + region.RegionName);
184 184
185 for (int x = (int)region.RegionLocX - 1; x <= region.RegionLocX + 1; x++) 185 List<GridRegion> neighbours = m_scene.GridService.GetNeighbours(m_scene.RegionInfo.ScopeID, m_scene.RegionInfo.RegionID);
186 m_log.DebugFormat("[INTERGRID]: Informing {0} neighbours that this region is up", neighbours.Count);
187 foreach (GridRegion n in neighbours)
186 { 188 {
187 for (int y = (int)region.RegionLocY - 1; y <= region.RegionLocY + 1; y++) 189 InformNeighbourThatRegionUpDelegate d = InformNeighboursThatRegionIsUpAsync;
188 { 190 d.BeginInvoke(neighbourService, region, n.RegionHandle,
189 if (!((x == region.RegionLocX) && (y == region.RegionLocY))) // skip this region 191 InformNeighborsThatRegionisUpCompleted,
190 { 192 d);
191 ulong handle = Utils.UIntsToLong((uint)x * Constants.RegionSize, (uint)y * Constants.RegionSize);
192 InformNeighbourThatRegionUpDelegate d = InformNeighboursThatRegionIsUpAsync;
193
194 d.BeginInvoke(neighbourService, region, handle,
195 InformNeighborsThatRegionisUpCompleted,
196 d);
197 }
198 }
199 } 193 }
200 } 194 }
201 195
202
203 public delegate void SendChildAgentDataUpdateDelegate(AgentPosition cAgentData, ulong regionHandle); 196 public delegate void SendChildAgentDataUpdateDelegate(AgentPosition cAgentData, ulong regionHandle);
204 197
205 /// <summary> 198 /// <summary>