diff options
author | UbitUmarov | 2015-11-01 03:01:59 +0000 |
---|---|---|
committer | UbitUmarov | 2015-11-01 03:01:59 +0000 |
commit | 72684592ba196095311b308407cbe5751c6dd8dd (patch) | |
tree | c51a1fb67c6d425b1cb904e788bac8a720d951c8 /OpenSim/Region/CoreModules | |
parent | fix cut points of UTF-8 strings (diff) | |
parent | Minor: Add an initializer to show what the default value would be. (diff) | |
download | opensim-SC-72684592ba196095311b308407cbe5751c6dd8dd.zip opensim-SC-72684592ba196095311b308407cbe5751c6dd8dd.tar.gz opensim-SC-72684592ba196095311b308407cbe5751c6dd8dd.tar.bz2 opensim-SC-72684592ba196095311b308407cbe5751c6dd8dd.tar.xz |
Merge branch 'master' into avinationmerge
Conflicts:
OpenSim/Framework/AvatarAppearance.cs
OpenSim/Framework/Servers/ServerBase.cs
OpenSim/Framework/VersionInfo.cs
OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs
OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs
OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs
OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
OpenSim/Region/PhysicsModules/ConvexDecompositionDotNet/Properties/AssemblyInfo.cs
OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs
OpenSim/Region/PhysicsModules/Ode/OdeScene.cs
OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
OpenSim/Services/HypergridService/GatekeeperService.cs
OpenSim/Services/Interfaces/IAvatarService.cs
OpenSim/Services/LLLoginService/LLLoginService.cs
Diffstat (limited to 'OpenSim/Region/CoreModules')
6 files changed, 51 insertions, 72 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs index 7d9609f..34b38b9 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs | |||
@@ -802,6 +802,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
802 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(0)); | 802 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(0)); |
803 | } | 803 | } |
804 | 804 | ||
805 | /* | ||
805 | [Test] | 806 | [Test] |
806 | public void TestSameSimulatorNeighbouringRegionsTeleportV1() | 807 | public void TestSameSimulatorNeighbouringRegionsTeleportV1() |
807 | { | 808 | { |
@@ -841,7 +842,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
841 | sceneB, config, new CapabilitiesModule(), etmB, attModB, new BasicInventoryAccessModule()); | 842 | sceneB, config, new CapabilitiesModule(), etmB, attModB, new BasicInventoryAccessModule()); |
842 | 843 | ||
843 | // FIXME: Hack - this is here temporarily to revert back to older entity transfer behaviour | 844 | // FIXME: Hack - this is here temporarily to revert back to older entity transfer behaviour |
844 | lscm.ServiceVersion = "SIMULATION/0.1"; | 845 | lscm.ServiceVersion = 0.1f; |
845 | 846 | ||
846 | UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(sceneA, 0x1); | 847 | UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(sceneA, 0x1); |
847 | 848 | ||
@@ -909,6 +910,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests | |||
909 | // Check events | 910 | // Check events |
910 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(0)); | 911 | Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(0)); |
911 | } | 912 | } |
913 | */ | ||
912 | 914 | ||
913 | [Test] | 915 | [Test] |
914 | public void TestSameSimulatorNeighbouringRegionsTeleportV2() | 916 | public void TestSameSimulatorNeighbouringRegionsTeleportV2() |
diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs index 0b5d95b..0472f31 100644 --- a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs | |||
@@ -63,18 +63,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat | |||
63 | { | 63 | { |
64 | m_config = config.Configs["Chat"]; | 64 | m_config = config.Configs["Chat"]; |
65 | 65 | ||
66 | if (null == m_config) | 66 | if (m_config != null) |
67 | { | 67 | { |
68 | m_log.Info("[CHAT]: no config found, plugin disabled"); | 68 | if (!m_config.GetBoolean("enabled", true)) |
69 | m_enabled = false; | 69 | { |
70 | return; | 70 | m_log.Info("[CHAT]: plugin disabled by configuration"); |
71 | } | 71 | m_enabled = false; |
72 | 72 | return; | |
73 | if (!m_config.GetBoolean("enabled", true)) | 73 | } |
74 | { | ||
75 | m_log.Info("[CHAT]: plugin disabled by configuration"); | ||
76 | m_enabled = false; | ||
77 | return; | ||
78 | } | 74 | } |
79 | 75 | ||
80 | m_whisperdistance = config.Configs["Chat"].GetInt("whisper_distance", m_whisperdistance); | 76 | m_whisperdistance = config.Configs["Chat"].GetInt("whisper_distance", m_whisperdistance); |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 9be6d45..8a4ac1b 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -57,14 +57,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
57 | public const int DefaultMaxTransferDistance = 4095; | 57 | public const int DefaultMaxTransferDistance = 4095; |
58 | public const bool WaitForAgentArrivedAtDestinationDefault = true; | 58 | public const bool WaitForAgentArrivedAtDestinationDefault = true; |
59 | 59 | ||
60 | public static readonly string OutgoingTransferVersionName = "SIMULATION"; | ||
61 | |||
62 | /// <summary> | ||
63 | /// Determine the entity transfer version we will use for teleports. | ||
64 | /// </summary> | ||
65 | public static readonly float OutgoingTransferVersion = VersionInfo.SimulationServiceVersion; | ||
66 | |||
67 | private string m_myVersion = ""; | ||
68 | /// <summary> | 60 | /// <summary> |
69 | /// The maximum distance, in standard region units (256m) that an agent is allowed to transfer. | 61 | /// The maximum distance, in standard region units (256m) that an agent is allowed to transfer. |
70 | /// </summary> | 62 | /// </summary> |
@@ -243,8 +235,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
243 | MaxTransferDistance = DefaultMaxTransferDistance; | 235 | MaxTransferDistance = DefaultMaxTransferDistance; |
244 | } | 236 | } |
245 | 237 | ||
246 | m_myVersion = string.Format("{0}/{1}", OutgoingTransferVersionName, OutgoingTransferVersion); | ||
247 | |||
248 | m_entityTransferStateMachine = new EntityTransferStateMachine(this); | 238 | m_entityTransferStateMachine = new EntityTransferStateMachine(this); |
249 | 239 | ||
250 | m_Enabled = true; | 240 | m_Enabled = true; |
@@ -736,10 +726,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
736 | sp.Name, sp.Scene.Name, finalDestination.RegionName); | 726 | sp.Name, sp.Scene.Name, finalDestination.RegionName); |
737 | 727 | ||
738 | string reason; | 728 | string reason; |
739 | string version; | 729 | EntityTransferContext ctx = new EntityTransferContext(); |
740 | 730 | ||
741 | if (!Scene.SimulationService.QueryAccess( | 731 | if (!Scene.SimulationService.QueryAccess( |
742 | finalDestination, sp.ControllingClient.AgentId, homeURI, true, position,m_myVersion, sp.Scene.GetFormatsOffered(), out version, out reason)) | 732 | finalDestination, sp.ControllingClient.AgentId, homeURI, true, position, sp.Scene.GetFormatsOffered(), ctx, out reason)) |
743 | { | 733 | { |
744 | sp.ControllingClient.SendTeleportFailed(reason); | 734 | sp.ControllingClient.SendTeleportFailed(reason); |
745 | 735 | ||
@@ -756,8 +746,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
756 | m_interRegionTeleportAttempts.Value++; | 746 | m_interRegionTeleportAttempts.Value++; |
757 | 747 | ||
758 | m_log.DebugFormat( | 748 | m_log.DebugFormat( |
759 | "[ENTITY TRANSFER MODULE]: {0} transfer version is {1}/{2}, {3} version is {4}", | 749 | "[ENTITY TRANSFER MODULE]: {0} transfer protocol version to {1} is {2} / {3}", |
760 | sp.Scene.Name, OutgoingTransferVersionName, OutgoingTransferVersion, finalDestination.RegionName, version); | 750 | sp.Scene.Name, finalDestination.RegionName, ctx.OutboundVersion, ctx.InboundVersion); |
761 | 751 | ||
762 | // Fixing a bug where teleporting while sitting results in the avatar ending up removed from | 752 | // Fixing a bug where teleporting while sitting results in the avatar ending up removed from |
763 | // both regions | 753 | // both regions |
@@ -837,21 +827,15 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
837 | agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath(); | 827 | agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath(); |
838 | } | 828 | } |
839 | 829 | ||
840 | // We're going to fallback to V1 if the destination gives us anything smaller than 0.2 or we're forcing | 830 | // We're going to fallback to V1 if the destination gives us anything smaller than 0.2 |
841 | // use of the earlier protocol | 831 | if (ctx.OutboundVersion >= 0.2f) |
842 | float versionNumber = 0.1f; | 832 | TransferAgent_V2(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, OutSideViewRange , ctx, out reason); |
843 | string[] versionComponents = version.Split(new char[] { '/' }); | ||
844 | if (versionComponents.Length >= 2) | ||
845 | float.TryParse(versionComponents[1], out versionNumber); | ||
846 | |||
847 | if (versionNumber >= 0.2f) | ||
848 | TransferAgent_V2(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, OutSideViewRange , version, out reason); | ||
849 | else | 833 | else |
850 | TransferAgent_V1(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, OutSideViewRange, version, out reason); | 834 | TransferAgent_V1(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, OutSideViewRange, ctx, out reason); |
851 | } | 835 | } |
852 | 836 | ||
853 | private void TransferAgent_V1(ScenePresence sp, AgentCircuitData agentCircuit, GridRegion reg, GridRegion finalDestination, | 837 | private void TransferAgent_V1(ScenePresence sp, AgentCircuitData agentCircuit, GridRegion reg, GridRegion finalDestination, |
854 | IPEndPoint endPoint, uint teleportFlags, bool OutSideViewRange, string version, out string reason) | 838 | IPEndPoint endPoint, uint teleportFlags, bool OutSideViewRange, EntityTransferContext ctx, out string reason) |
855 | { | 839 | { |
856 | ulong destinationHandle = finalDestination.RegionHandle; | 840 | ulong destinationHandle = finalDestination.RegionHandle; |
857 | AgentCircuitData currentAgentCircuit = sp.Scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode); | 841 | AgentCircuitData currentAgentCircuit = sp.Scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode); |
@@ -1045,13 +1029,16 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1045 | } | 1029 | } |
1046 | 1030 | ||
1047 | 1031 | ||
1032 | /* | ||
1033 | // TODO: This may be 0.6. Check if still needed | ||
1048 | // For backwards compatibility | 1034 | // For backwards compatibility |
1049 | if (version == "Unknown" || version == string.Empty) | 1035 | if (version == 0f) |
1050 | { | 1036 | { |
1051 | // CrossAttachmentsIntoNewRegion is a synchronous call. We shouldn't need to wait after it | 1037 | // CrossAttachmentsIntoNewRegion is a synchronous call. We shouldn't need to wait after it |
1052 | m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Old simulator, sending attachments one by one..."); | 1038 | m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Old simulator, sending attachments one by one..."); |
1053 | CrossAttachmentsIntoNewRegion(finalDestination, sp, true); | 1039 | CrossAttachmentsIntoNewRegion(finalDestination, sp, true); |
1054 | } | 1040 | } |
1041 | */ | ||
1055 | 1042 | ||
1056 | m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.CleaningUp); | 1043 | m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.CleaningUp); |
1057 | 1044 | ||
@@ -1087,7 +1074,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1087 | } | 1074 | } |
1088 | 1075 | ||
1089 | private void TransferAgent_V2(ScenePresence sp, AgentCircuitData agentCircuit, GridRegion reg, GridRegion finalDestination, | 1076 | private void TransferAgent_V2(ScenePresence sp, AgentCircuitData agentCircuit, GridRegion reg, GridRegion finalDestination, |
1090 | IPEndPoint endPoint, uint teleportFlags, bool OutSideViewRange, string version, out string reason) | 1077 | IPEndPoint endPoint, uint teleportFlags, bool OutSideViewRange, EntityTransferContext ctx, out string reason) |
1091 | { | 1078 | { |
1092 | ulong destinationHandle = finalDestination.RegionHandle; | 1079 | ulong destinationHandle = finalDestination.RegionHandle; |
1093 | AgentCircuitData currentAgentCircuit = sp.Scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode); | 1080 | AgentCircuitData currentAgentCircuit = sp.Scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode); |
@@ -1494,9 +1481,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1494 | // now only works for crossings | 1481 | // now only works for crossings |
1495 | 1482 | ||
1496 | public GridRegion GetDestination(Scene scene, UUID agentID, Vector3 pos, | 1483 | public GridRegion GetDestination(Scene scene, UUID agentID, Vector3 pos, |
1497 | out string version, out Vector3 newpos, out string failureReason) | 1484 | EntityTransferContext ctx, out Vector3 newpos, out string failureReason) |
1498 | { | 1485 | { |
1499 | version = String.Empty; | ||
1500 | newpos = pos; | 1486 | newpos = pos; |
1501 | failureReason = string.Empty; | 1487 | failureReason = string.Empty; |
1502 | 1488 | ||
@@ -1532,8 +1518,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1532 | string homeURI = scene.GetAgentHomeURI(agentID); | 1518 | string homeURI = scene.GetAgentHomeURI(agentID); |
1533 | 1519 | ||
1534 | if (!scene.SimulationService.QueryAccess( | 1520 | if (!scene.SimulationService.QueryAccess( |
1535 | neighbourRegion, agentID, homeURI, false, newpos, m_myVersion, | 1521 | neighbourRegion, agentID, homeURI, false, newpos, |
1536 | new List<UUID>(), out version, out failureReason)) | 1522 | scene.GetFormatsOffered(), ctx, out failureReason)) |
1537 | { | 1523 | { |
1538 | // remember the fail | 1524 | // remember the fail |
1539 | m_bannedRegionCache.Add(neighbourRegion.RegionHandle, agentID); | 1525 | m_bannedRegionCache.Add(neighbourRegion.RegionHandle, agentID); |
@@ -1571,13 +1557,13 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1571 | uint x; | 1557 | uint x; |
1572 | uint y; | 1558 | uint y; |
1573 | Vector3 newpos; | 1559 | Vector3 newpos; |
1574 | string version; | 1560 | EntityTransferContext ctx = new EntityTransferContext(); |
1575 | string failureReason; | 1561 | string failureReason; |
1576 | 1562 | ||
1577 | Vector3 pos = agent.AbsolutePosition + agent.Velocity; | 1563 | Vector3 pos = agent.AbsolutePosition + agent.Velocity; |
1578 | 1564 | ||
1579 | GridRegion neighbourRegion = GetDestination(agent.Scene, agent.UUID, pos, | 1565 | GridRegion neighbourRegion = GetDestination(agent.Scene, agent.UUID, pos, |
1580 | out version, out newpos, out failureReason); | 1566 | ctx, out newpos, out failureReason); |
1581 | if (neighbourRegion == null) | 1567 | if (neighbourRegion == null) |
1582 | { | 1568 | { |
1583 | if (failureReason != String.Empty) | 1569 | if (failureReason != String.Empty) |
@@ -1680,7 +1666,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1680 | /// </summary> | 1666 | /// </summary> |
1681 | public ScenePresence CrossAgentToNewRegionAsync( | 1667 | public ScenePresence CrossAgentToNewRegionAsync( |
1682 | ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, | 1668 | ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, |
1683 | bool isFlying, string version) | 1669 | bool isFlying, EntityTransferContext ctx) |
1684 | { | 1670 | { |
1685 | try | 1671 | try |
1686 | { | 1672 | { |
@@ -1699,7 +1685,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1699 | m_entityTransferStateMachine.ResetFromTransit(agent.UUID); | 1685 | m_entityTransferStateMachine.ResetFromTransit(agent.UUID); |
1700 | } | 1686 | } |
1701 | 1687 | ||
1702 | CrossAgentToNewRegionPost(agent, pos, neighbourRegion, isFlying, version); | 1688 | CrossAgentToNewRegionPost(agent, pos, neighbourRegion, isFlying, ctx); |
1703 | } | 1689 | } |
1704 | catch (Exception e) | 1690 | catch (Exception e) |
1705 | { | 1691 | { |
@@ -1765,7 +1751,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1765 | } | 1751 | } |
1766 | 1752 | ||
1767 | public void CrossAgentToNewRegionPost(ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, | 1753 | public void CrossAgentToNewRegionPost(ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, |
1768 | bool isFlying, string version) | 1754 | bool isFlying, EntityTransferContext ctx) |
1769 | { | 1755 | { |
1770 | 1756 | ||
1771 | string agentcaps; | 1757 | string agentcaps; |
@@ -1827,6 +1813,16 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1827 | 1813 | ||
1828 | agent.CloseChildAgents(false, neighbourRegion.RegionHandle, neighbourRegion.RegionSizeX, neighbourRegion.RegionSizeY); | 1814 | agent.CloseChildAgents(false, neighbourRegion.RegionHandle, neighbourRegion.RegionSizeX, neighbourRegion.RegionSizeY); |
1829 | 1815 | ||
1816 | // TODO: Check since what version this wasn't needed anymore. May be as old as 0.6 | ||
1817 | /* | ||
1818 | // Backwards compatibility. Best effort | ||
1819 | if (version == 0f) | ||
1820 | { | ||
1821 | m_log.DebugFormat("[ENTITY TRANSFER MODULE]: neighbor with old version, passing attachments one by one..."); | ||
1822 | Thread.Sleep(3000); // wait a little now that we're not waiting for the callback | ||
1823 | CrossAttachmentsIntoNewRegion(neighbourRegion, agent, true); | ||
1824 | } | ||
1825 | */ | ||
1830 | 1826 | ||
1831 | // the user may change their profile information in other region, | 1827 | // the user may change their profile information in other region, |
1832 | // so the userinfo in UserProfileCache is not reliable any more, delete it | 1828 | // so the userinfo in UserProfileCache is not reliable any more, delete it |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs index de0ae4c..6cb15f6 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs | |||
@@ -46,11 +46,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
46 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 46 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
47 | 47 | ||
48 | /// <summary> | 48 | /// <summary> |
49 | /// Version of this service. | ||
50 | /// </summary> | ||
51 | public string ServiceVersion { get; set; } | ||
52 | |||
53 | /// <summary> | ||
54 | /// Map region ID to scene. | 49 | /// Map region ID to scene. |
55 | /// </summary> | 50 | /// </summary> |
56 | private Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>(); | 51 | private Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>(); |
@@ -81,8 +76,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
81 | 76 | ||
82 | public void InitialiseService(IConfigSource configSource) | 77 | public void InitialiseService(IConfigSource configSource) |
83 | { | 78 | { |
84 | ServiceVersion = String.Format("SIMULATION/{0}", VersionInfo.SimulationServiceVersion); | ||
85 | m_log.InfoFormat("[LOCAL SIMULATION CONNECTOR]: Initialized with connector protocol version {0}", ServiceVersion); | ||
86 | } | 79 | } |
87 | 80 | ||
88 | public void PostInitialise() | 81 | public void PostInitialise() |
@@ -251,11 +244,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
251 | return true; | 244 | return true; |
252 | } | 245 | } |
253 | 246 | ||
254 | 247 | public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, List<UUID> features, EntityTransferContext ctx, out string reason) | |
255 | public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, string theirversion, List<UUID> features, out string version, out string reason) | ||
256 | { | 248 | { |
257 | reason = "Communications failure"; | 249 | reason = "Communications failure"; |
258 | version = ServiceVersion; | ||
259 | if (destination == null) | 250 | if (destination == null) |
260 | return false; | 251 | return false; |
261 | 252 | ||
@@ -264,19 +255,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
264 | // m_log.DebugFormat( | 255 | // m_log.DebugFormat( |
265 | // "[LOCAL SIMULATION CONNECTOR]: Found region {0} {1} to send AgentUpdate", | 256 | // "[LOCAL SIMULATION CONNECTOR]: Found region {0} {1} to send AgentUpdate", |
266 | // s.RegionInfo.RegionName, destination.RegionHandle); | 257 | // s.RegionInfo.RegionName, destination.RegionHandle); |
267 | uint size = m_scenes[destination.RegionID].RegionInfo.RegionSizeX; | 258 | uint sizeX = m_scenes[destination.RegionID].RegionInfo.RegionSizeX; |
268 | 259 | uint sizeY = m_scenes[destination.RegionID].RegionInfo.RegionSizeY; | |
269 | float theirVersionNumber = 0f; | ||
270 | string[] versionComponents = theirversion.Split(new char[] { '/' }); | ||
271 | if (versionComponents.Length >= 2) | ||
272 | float.TryParse(versionComponents[1], out theirVersionNumber); | ||
273 | 260 | ||
274 | // Var regions here, and the requesting simulator is in an older version. | 261 | // Var regions here, and the requesting simulator is in an older version. |
275 | // We will forbide this, because it crashes the viewers | 262 | // We will forbide this, because it crashes the viewers |
276 | if (theirVersionNumber < 0.3f && size > 256) | 263 | if (ctx.OutboundVersion < 0.3f && (sizeX != 256 || sizeY != 256)) |
277 | { | 264 | { |
278 | reason = "Destination is a variable-sized region, and source is an old simulator. Consider upgrading."; | 265 | reason = "Destination is a variable-sized region, and source is an old simulator. Consider upgrading."; |
279 | m_log.DebugFormat("[LOCAL SIMULATION CONNECTOR]: Request to access this variable-sized region from {0} simulator was denied", theirVersionNumber); | 266 | m_log.DebugFormat("[LOCAL SIMULATION CONNECTOR]: Request to access this variable-sized region from older simulator was denied"); |
280 | return false; | 267 | return false; |
281 | 268 | ||
282 | } | 269 | } |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs index c1daae9..cf19edd 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs | |||
@@ -205,22 +205,20 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
205 | return m_remoteConnector.UpdateAgent(destination, cAgentData); | 205 | return m_remoteConnector.UpdateAgent(destination, cAgentData); |
206 | } | 206 | } |
207 | 207 | ||
208 | 208 | public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, List<UUID> features, EntityTransferContext ctx, out string reason) | |
209 | public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, string sversion, List<UUID> features, out string version, out string reason) | ||
210 | { | 209 | { |
211 | reason = "Communications failure"; | 210 | reason = "Communications failure"; |
212 | version = "Unknown"; | ||
213 | 211 | ||
214 | if (destination == null) | 212 | if (destination == null) |
215 | return false; | 213 | return false; |
216 | 214 | ||
217 | // Try local first | 215 | // Try local first |
218 | if (m_localBackend.QueryAccess(destination, agentID, agentHomeURI, viaTeleport, position, sversion, features, out version, out reason)) | 216 | if (m_localBackend.QueryAccess(destination, agentID, agentHomeURI, viaTeleport, position, features, ctx, out reason)) |
219 | return true; | 217 | return true; |
220 | 218 | ||
221 | // else do the remote thing | 219 | // else do the remote thing |
222 | if (!m_localBackend.IsLocalRegion(destination.RegionID)) | 220 | if (!m_localBackend.IsLocalRegion(destination.RegionID)) |
223 | return m_remoteConnector.QueryAccess(destination, agentID, agentHomeURI, viaTeleport, position, sversion, features, out version, out reason); | 221 | return m_remoteConnector.QueryAccess(destination, agentID, agentHomeURI, viaTeleport, position, features, ctx, out reason); |
224 | 222 | ||
225 | return false; | 223 | return false; |
226 | } | 224 | } |
diff --git a/OpenSim/Region/CoreModules/World/Region/RegionCommandsModule.cs b/OpenSim/Region/CoreModules/World/Region/RegionCommandsModule.cs index 8d192ba..b9bcb8b 100644 --- a/OpenSim/Region/CoreModules/World/Region/RegionCommandsModule.cs +++ b/OpenSim/Region/CoreModules/World/Region/RegionCommandsModule.cs | |||
@@ -100,7 +100,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands | |||
100 | 100 | ||
101 | m_console.Commands.AddCommand( | 101 | m_console.Commands.AddCommand( |
102 | "Regions", false, "region set", | 102 | "Regions", false, "region set", |
103 | "region get", | 103 | "region set", |
104 | "Set control information for the currently selected region.", | 104 | "Set control information for the currently selected region.", |
105 | "Currently, the following parameters can be set:\n" | 105 | "Currently, the following parameters can be set:\n" |
106 | + "agent-limit <int> - Current root agent limit. This is persisted over restart.\n" | 106 | + "agent-limit <int> - Current root agent limit. This is persisted over restart.\n" |