diff options
author | Teravus Ovares | 2008-03-30 08:01:47 +0000 |
---|---|---|
committer | Teravus Ovares | 2008-03-30 08:01:47 +0000 |
commit | fd2caf5f1673ad14702d89db9804f841c5cb861a (patch) | |
tree | 18fd4ae03180b14df41f93544afa0cc9d5ec5309 /OpenSim/Region/Communications | |
parent | * Stop the grid inventory service sending all folder and item details twice (diff) | |
download | opensim-SC_OLD-fd2caf5f1673ad14702d89db9804f841c5cb861a.zip opensim-SC_OLD-fd2caf5f1673ad14702d89db9804f841c5cb861a.tar.gz opensim-SC_OLD-fd2caf5f1673ad14702d89db9804f841c5cb861a.tar.bz2 opensim-SC_OLD-fd2caf5f1673ad14702d89db9804f841c5cb861a.tar.xz |
This update has good news and bad news, first the bad.
* This update breaks inter-region communications, sorry.
* You will need to run prebuild.
Next, the good;
* This update solves the unexpected binary element when Linux simulators inform windows simulators and vice versa. So Linux Simulators and Windows simulators are 100% compatible again.
* This update introduces an Integer in the prim crossing method to tell the receiving simulator which XML method to use to load the prim that crossed the border. If the receiving prim doesn't support the method, the prim crossing fails and no prims are lost.
That being said, it's best to update all your simulators to this revision at once.
Diffstat (limited to 'OpenSim/Region/Communications')
3 files changed, 38 insertions, 24 deletions
diff --git a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs index de891a2..f5a5e83 100644 --- a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs +++ b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs | |||
@@ -225,6 +225,12 @@ namespace OpenSim.Region.Communications.Local | |||
225 | public virtual bool RegionUp(SearializableRegionInfo sregion, ulong regionhandle) | 225 | public virtual bool RegionUp(SearializableRegionInfo sregion, ulong regionhandle) |
226 | { | 226 | { |
227 | RegionInfo region = new RegionInfo(sregion); | 227 | RegionInfo region = new RegionInfo(sregion); |
228 | |||
229 | //region.RegionLocX = sregion.X; | ||
230 | //region.RegionLocY = sregion.Y; | ||
231 | //region.SetEndPoint(sregion.IPADDR, sregion.PORT); | ||
232 | |||
233 | //sregion); | ||
228 | if (m_regionListeners.ContainsKey(regionhandle)) | 234 | if (m_regionListeners.ContainsKey(regionhandle)) |
229 | { | 235 | { |
230 | return m_regionListeners[regionhandle].TriggerRegionUp(region); | 236 | return m_regionListeners[regionhandle].TriggerRegionUp(region); |
@@ -316,11 +322,11 @@ namespace OpenSim.Region.Communications.Local | |||
316 | return false; | 322 | return false; |
317 | } | 323 | } |
318 | 324 | ||
319 | public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData) | 325 | public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData, int XMLMethod) |
320 | { | 326 | { |
321 | if (m_regionListeners.ContainsKey(regionHandle)) | 327 | if (m_regionListeners.ContainsKey(regionHandle)) |
322 | { | 328 | { |
323 | m_regionListeners[regionHandle].TriggerExpectPrim(regionHandle, primID, objData); | 329 | m_regionListeners[regionHandle].TriggerExpectPrim(regionHandle, primID, objData, XMLMethod); |
324 | return true; | 330 | return true; |
325 | } | 331 | } |
326 | return false; | 332 | return false; |
@@ -408,11 +414,11 @@ namespace OpenSim.Region.Communications.Local | |||
408 | } | 414 | } |
409 | } | 415 | } |
410 | 416 | ||
411 | public void TriggerExpectPrim(ulong regionHandle, LLUUID primID, string objData) | 417 | public void TriggerExpectPrim(ulong regionHandle, LLUUID primID, string objData, int XMLMethod) |
412 | { | 418 | { |
413 | if (m_regionListeners.ContainsKey(regionHandle)) | 419 | if (m_regionListeners.ContainsKey(regionHandle)) |
414 | { | 420 | { |
415 | m_regionListeners[regionHandle].TriggerExpectPrim(regionHandle, primID, objData); | 421 | m_regionListeners[regionHandle].TriggerExpectPrim(regionHandle, primID, objData, XMLMethod); |
416 | } | 422 | } |
417 | } | 423 | } |
418 | 424 | ||
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs index d19752c..22bb0f0 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs | |||
@@ -857,6 +857,8 @@ namespace OpenSim.Region.Communications.OGS1 | |||
857 | // The region asking the grid services about itself.. | 857 | // The region asking the grid services about itself.. |
858 | // And, surprisingly, the reason is.. it doesn't know | 858 | // And, surprisingly, the reason is.. it doesn't know |
859 | // it's own remoting port! How special. | 859 | // it's own remoting port! How special. |
860 | RegionUpData regiondata = new RegionUpData(region.RegionLocX, region.RegionLocY, region.ExternalHostName, region.InternalEndPoint.Port); | ||
861 | |||
860 | region = new SearializableRegionInfo(RequestNeighbourInfo(region.RegionHandle)); | 862 | region = new SearializableRegionInfo(RequestNeighbourInfo(region.RegionHandle)); |
861 | region.RemotingAddress = region.ExternalHostName; | 863 | region.RemotingAddress = region.ExternalHostName; |
862 | region.RemotingPort = NetworkServersInfo.RemotingListenerPort; | 864 | region.RemotingPort = NetworkServersInfo.RemotingListenerPort; |
@@ -885,7 +887,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
885 | 887 | ||
886 | if (remObject != null) | 888 | if (remObject != null) |
887 | { | 889 | { |
888 | retValue = remObject.RegionUp(region, regionhandle); | 890 | retValue = remObject.RegionUp(regiondata, regionhandle); |
889 | } | 891 | } |
890 | else | 892 | else |
891 | { | 893 | { |
@@ -962,7 +964,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
962 | /// <param name="regionHandle"></param> | 964 | /// <param name="regionHandle"></param> |
963 | /// <param name="agentData"></param> | 965 | /// <param name="agentData"></param> |
964 | /// <returns></returns> | 966 | /// <returns></returns> |
965 | public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData) | 967 | public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData, int XMLMethod) |
966 | { | 968 | { |
967 | int failures = 0; | 969 | int failures = 0; |
968 | lock (m_deadRegionCache) | 970 | lock (m_deadRegionCache) |
@@ -977,7 +979,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
977 | RegionInfo regInfo = null; | 979 | RegionInfo regInfo = null; |
978 | try | 980 | try |
979 | { | 981 | { |
980 | if (m_localBackend.InformRegionOfPrimCrossing(regionHandle, primID, objData)) | 982 | if (m_localBackend.InformRegionOfPrimCrossing(regionHandle, primID, objData, XMLMethod)) |
981 | { | 983 | { |
982 | return true; | 984 | return true; |
983 | } | 985 | } |
@@ -996,7 +998,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
996 | 998 | ||
997 | if (remObject != null) | 999 | if (remObject != null) |
998 | { | 1000 | { |
999 | retValue = remObject.InformRegionOfPrimCrossing(regionHandle, primID.UUID, objData); | 1001 | retValue = remObject.InformRegionOfPrimCrossing(regionHandle, primID.UUID, objData, XMLMethod); |
1000 | } | 1002 | } |
1001 | else | 1003 | else |
1002 | { | 1004 | { |
@@ -1325,23 +1327,29 @@ namespace OpenSim.Region.Communications.OGS1 | |||
1325 | } | 1327 | } |
1326 | } | 1328 | } |
1327 | 1329 | ||
1328 | public bool TriggerRegionUp(SearializableRegionInfo regionData, ulong regionhandle) | 1330 | public bool TriggerRegionUp(RegionUpData regionData, ulong regionhandle) |
1329 | { | 1331 | { |
1330 | m_log.Info("[OGS1 GRID SERVICES]: " + | 1332 | m_log.Info("[OGS1 GRID SERVICES]: " + |
1331 | gdebugRegionName + "Incoming OGS1 RegionUpReport: " + "(" + regionData.RegionLocX + | 1333 | gdebugRegionName + "Incoming OGS1 RegionUpReport: " + "(" + regionData.X + |
1332 | "," + regionData.RegionLocY + "). Giving this region a fresh set of 'dead' tries"); | 1334 | "," + regionData.Y + "). Giving this region a fresh set of 'dead' tries"); |
1335 | RegionInfo nRegionInfo = new RegionInfo(); | ||
1336 | nRegionInfo.SetEndPoint("127.0.0.1", regionData.PORT); | ||
1337 | nRegionInfo.ExternalHostName = regionData.IPADDR; | ||
1338 | nRegionInfo.RegionLocX = regionData.X; | ||
1339 | nRegionInfo.RegionLocY = regionData.Y; | ||
1333 | 1340 | ||
1341 | |||
1334 | try | 1342 | try |
1335 | { | 1343 | { |
1336 | lock (m_deadRegionCache) | 1344 | lock (m_deadRegionCache) |
1337 | { | 1345 | { |
1338 | if (m_deadRegionCache.ContainsKey(regionData.RegionHandle)) | 1346 | if (m_deadRegionCache.ContainsKey(nRegionInfo.RegionHandle)) |
1339 | { | 1347 | { |
1340 | m_deadRegionCache.Remove(regionData.RegionHandle); | 1348 | m_deadRegionCache.Remove(nRegionInfo.RegionHandle); |
1341 | } | 1349 | } |
1342 | } | 1350 | } |
1343 | 1351 | ||
1344 | return m_localBackend.TriggerRegionUp(new RegionInfo(regionData), regionhandle); | 1352 | return m_localBackend.TriggerRegionUp(nRegionInfo, regionhandle); |
1345 | } | 1353 | } |
1346 | 1354 | ||
1347 | catch (RemotingException e) | 1355 | catch (RemotingException e) |
@@ -1372,12 +1380,12 @@ namespace OpenSim.Region.Communications.OGS1 | |||
1372 | /// <param name="regionHandle"></param> | 1380 | /// <param name="regionHandle"></param> |
1373 | /// <param name="agentData"></param> | 1381 | /// <param name="agentData"></param> |
1374 | /// <returns></returns> | 1382 | /// <returns></returns> |
1375 | public bool IncomingPrim(ulong regionHandle, LLUUID primID, string objData) | 1383 | public bool IncomingPrim(ulong regionHandle, LLUUID primID, string objData, int XMLMethod) |
1376 | { | 1384 | { |
1377 | // Is this necessary? | 1385 | // Is this necessary? |
1378 | try | 1386 | try |
1379 | { | 1387 | { |
1380 | m_localBackend.TriggerExpectPrim(regionHandle, primID, objData); | 1388 | m_localBackend.TriggerExpectPrim(regionHandle, primID, objData, XMLMethod); |
1381 | return true; | 1389 | return true; |
1382 | //m_localBackend. | 1390 | //m_localBackend. |
1383 | } | 1391 | } |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs index c282464..2e106d7 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs | |||
@@ -38,9 +38,9 @@ namespace OpenSim.Region.Communications.OGS1 | |||
38 | 38 | ||
39 | public delegate bool InformRegionPrimGroup(ulong regionHandle, LLUUID primID, LLVector3 Positon, bool isPhysical); | 39 | public delegate bool InformRegionPrimGroup(ulong regionHandle, LLUUID primID, LLVector3 Positon, bool isPhysical); |
40 | 40 | ||
41 | public delegate bool PrimGroupArrival(ulong regionHandle, LLUUID primID, string objData); | 41 | public delegate bool PrimGroupArrival(ulong regionHandle, LLUUID primID, string objData, int XMLMethod); |
42 | 42 | ||
43 | public delegate bool RegionUp(SearializableRegionInfo region, ulong regionhandle); | 43 | public delegate bool RegionUp(RegionUpData region, ulong regionhandle); |
44 | 44 | ||
45 | public delegate bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate childUpdate); | 45 | public delegate bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate childUpdate); |
46 | 46 | ||
@@ -90,7 +90,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
90 | return false; | 90 | return false; |
91 | } | 91 | } |
92 | 92 | ||
93 | public bool RegionUp(SearializableRegionInfo sregion, ulong regionhandle) | 93 | public bool RegionUp(RegionUpData sregion, ulong regionhandle) |
94 | { | 94 | { |
95 | handlerRegionUp = OnRegionUp; | 95 | handlerRegionUp = OnRegionUp; |
96 | if (handlerRegionUp != null) | 96 | if (handlerRegionUp != null) |
@@ -130,12 +130,12 @@ namespace OpenSim.Region.Communications.OGS1 | |||
130 | return false; | 130 | return false; |
131 | } | 131 | } |
132 | 132 | ||
133 | public bool ExpectPrimCrossing(ulong regionHandle, LLUUID primID, string objData) | 133 | public bool ExpectPrimCrossing(ulong regionHandle, LLUUID primID, string objData, int XMLMethod) |
134 | { | 134 | { |
135 | handlerPrimGroupArrival = OnPrimGroupArrival; | 135 | handlerPrimGroupArrival = OnPrimGroupArrival; |
136 | if (handlerPrimGroupArrival != null) | 136 | if (handlerPrimGroupArrival != null) |
137 | { | 137 | { |
138 | return handlerPrimGroupArrival(regionHandle, primID, objData); | 138 | return handlerPrimGroupArrival(regionHandle, primID, objData, XMLMethod); |
139 | } | 139 | } |
140 | return false; | 140 | return false; |
141 | } | 141 | } |
@@ -173,7 +173,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
173 | } | 173 | } |
174 | } | 174 | } |
175 | 175 | ||
176 | public bool RegionUp(SearializableRegionInfo region, ulong regionhandle) | 176 | public bool RegionUp(RegionUpData region, ulong regionhandle) |
177 | { | 177 | { |
178 | try | 178 | try |
179 | { | 179 | { |
@@ -232,11 +232,11 @@ namespace OpenSim.Region.Communications.OGS1 | |||
232 | } | 232 | } |
233 | } | 233 | } |
234 | 234 | ||
235 | public bool InformRegionOfPrimCrossing(ulong regionHandle, Guid primID, string objData) | 235 | public bool InformRegionOfPrimCrossing(ulong regionHandle, Guid primID, string objData, int XMLMethod) |
236 | { | 236 | { |
237 | try | 237 | try |
238 | { | 238 | { |
239 | return InterRegionSingleton.Instance.ExpectPrimCrossing(regionHandle, new LLUUID(primID), objData); | 239 | return InterRegionSingleton.Instance.ExpectPrimCrossing(regionHandle, new LLUUID(primID), objData, XMLMethod); |
240 | } | 240 | } |
241 | catch (RemotingException e) | 241 | catch (RemotingException e) |
242 | { | 242 | { |