diff options
-rw-r--r-- | OpenSim/Framework/Servers/ServerBase.cs | 3 | ||||
-rw-r--r-- | OpenSim/Framework/VersionInfo.cs | 29 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 47 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs | 22 | ||||
-rw-r--r-- | OpenSim/Services/HypergridService/GatekeeperService.cs | 3 | ||||
-rw-r--r-- | OpenSim/Services/LLLoginService/LLLoginService.cs | 6 | ||||
-rw-r--r-- | bin/OpenSimDefaults.ini | 15 | ||||
-rw-r--r-- | bin/config-include/Standalone.ini | 15 | ||||
-rw-r--r-- | bin/config-include/StandaloneHypergrid.ini | 15 |
9 files changed, 35 insertions, 120 deletions
diff --git a/OpenSim/Framework/Servers/ServerBase.cs b/OpenSim/Framework/Servers/ServerBase.cs index 35177f4..6e089ca 100644 --- a/OpenSim/Framework/Servers/ServerBase.cs +++ b/OpenSim/Framework/Servers/ServerBase.cs | |||
@@ -873,7 +873,8 @@ namespace OpenSim.Framework.Servers | |||
873 | 873 | ||
874 | public string GetVersionText() | 874 | public string GetVersionText() |
875 | { | 875 | { |
876 | return String.Format("Version: {0} (interface version {1})", m_version, VersionInfo.MajorInterfaceVersion); | 876 | return String.Format("Version: {0} (interface version {1}, SIMULATION/{2})", |
877 | m_version, VersionInfo.MajorInterfaceVersion, VersionInfo.SimulationServiceVersion); | ||
877 | } | 878 | } |
878 | 879 | ||
879 | /// <summary> | 880 | /// <summary> |
diff --git a/OpenSim/Framework/VersionInfo.cs b/OpenSim/Framework/VersionInfo.cs index a285db0..0b48519 100644 --- a/OpenSim/Framework/VersionInfo.cs +++ b/OpenSim/Framework/VersionInfo.cs | |||
@@ -60,17 +60,26 @@ namespace OpenSim | |||
60 | /// <value> | 60 | /// <value> |
61 | /// This is the external interface version. It is separate from the OpenSimulator project version. | 61 | /// This is the external interface version. It is separate from the OpenSimulator project version. |
62 | /// | 62 | /// |
63 | /// This version number should be | ||
64 | /// increased by 1 every time a code change makes the previous OpenSimulator revision incompatible | ||
65 | /// with the new revision. This will usually be due to interregion or grid facing interface changes. | ||
66 | /// | ||
67 | /// Changes which are compatible with an older revision (e.g. older revisions experience degraded functionality | ||
68 | /// but not outright failure) do not need a version number increment. | ||
69 | /// | ||
70 | /// Having this version number allows the grid service to reject connections from regions running a version | ||
71 | /// of the code that is too old. | ||
72 | /// | ||
73 | /// </value> | 63 | /// </value> |
74 | public readonly static int MajorInterfaceVersion = 8; | 64 | public readonly static int MajorInterfaceVersion = 8; |
65 | |||
66 | /// <summary> | ||
67 | /// This rules versioning regarding teleports, and compatibility between simulators in that regard. | ||
68 | /// </summary> | ||
69 | /// | ||
70 | /// <remarks> | ||
71 | /// The protocol version that we will use for outgoing transfers | ||
72 | /// Valid values are | ||
73 | /// "SIMULATION/0.3" | ||
74 | /// - This is the latest, and it supports teleports to variable-sized regions | ||
75 | /// - Older versions can teleport to this one, but only if the destination region | ||
76 | /// is 256x256 | ||
77 | /// "SIMULATION/0.2" | ||
78 | /// - A source simulator which only implements "SIMULATION/0.1" can still teleport here | ||
79 | /// - this protocol is more efficient than "SIMULATION/0.1" | ||
80 | /// "SIMULATION/0.1" | ||
81 | /// - this is an older teleport protocol used in OpenSimulator 0.7.5 and before. | ||
82 | /// </remarks> | ||
83 | public readonly static float SimulationServiceVersion = 0.3f; | ||
75 | } | 84 | } |
76 | } | 85 | } |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index a43b823..9be6d45 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -57,12 +57,12 @@ 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 | private string OutgoingTransferVersionName { get; set; } | 60 | public static readonly string OutgoingTransferVersionName = "SIMULATION"; |
61 | 61 | ||
62 | /// <summary> | 62 | /// <summary> |
63 | /// Determine the maximum entity transfer version we will use for teleports. | 63 | /// Determine the entity transfer version we will use for teleports. |
64 | /// </summary> | 64 | /// </summary> |
65 | private float MaxOutgoingTransferVersion { get; set; } | 65 | public static readonly float OutgoingTransferVersion = VersionInfo.SimulationServiceVersion; |
66 | 66 | ||
67 | private string m_myVersion = ""; | 67 | private string m_myVersion = ""; |
68 | /// <summary> | 68 | /// <summary> |
@@ -215,9 +215,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
215 | /// <param name="source"></param> | 215 | /// <param name="source"></param> |
216 | protected virtual void InitialiseCommon(IConfigSource source) | 216 | protected virtual void InitialiseCommon(IConfigSource source) |
217 | { | 217 | { |
218 | string transferVersionName = "SIMULATION"; | ||
219 | float maxTransferVersion = 0.3f; | ||
220 | |||
221 | IConfig hypergridConfig = source.Configs["Hypergrid"]; | 218 | IConfig hypergridConfig = source.Configs["Hypergrid"]; |
222 | if (hypergridConfig != null) | 219 | if (hypergridConfig != null) |
223 | { | 220 | { |
@@ -233,33 +230,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
233 | IConfig transferConfig = source.Configs["EntityTransfer"]; | 230 | IConfig transferConfig = source.Configs["EntityTransfer"]; |
234 | if (transferConfig != null) | 231 | if (transferConfig != null) |
235 | { | 232 | { |
236 | string rawVersion | ||
237 | = transferConfig.GetString( | ||
238 | "MaxOutgoingTransferVersion", | ||
239 | string.Format("{0}/{1}", transferVersionName, maxTransferVersion)); | ||
240 | |||
241 | string[] rawVersionComponents = rawVersion.Split(new char[] { '/' }); | ||
242 | |||
243 | bool versionValid = false; | ||
244 | |||
245 | if (rawVersionComponents.Length >= 2) | ||
246 | versionValid = float.TryParse(rawVersionComponents[1], out maxTransferVersion); | ||
247 | |||
248 | if (!versionValid) | ||
249 | { | ||
250 | m_log.ErrorFormat( | ||
251 | "[ENTITY TRANSFER MODULE]: MaxOutgoingTransferVersion {0} is invalid, using {1}", | ||
252 | rawVersion, string.Format("{0}/{1}", transferVersionName, maxTransferVersion)); | ||
253 | } | ||
254 | else | ||
255 | { | ||
256 | transferVersionName = rawVersionComponents[0]; | ||
257 | |||
258 | m_log.InfoFormat( | ||
259 | "[ENTITY TRANSFER MODULE]: MaxOutgoingTransferVersion set to {0}", | ||
260 | string.Format("{0}/{1}", transferVersionName, maxTransferVersion)); | ||
261 | } | ||
262 | |||
263 | DisableInterRegionTeleportCancellation | 233 | DisableInterRegionTeleportCancellation |
264 | = transferConfig.GetBoolean("DisableInterRegionTeleportCancellation", false); | 234 | = transferConfig.GetBoolean("DisableInterRegionTeleportCancellation", false); |
265 | 235 | ||
@@ -273,10 +243,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
273 | MaxTransferDistance = DefaultMaxTransferDistance; | 243 | MaxTransferDistance = DefaultMaxTransferDistance; |
274 | } | 244 | } |
275 | 245 | ||
276 | OutgoingTransferVersionName = transferVersionName; | 246 | m_myVersion = string.Format("{0}/{1}", OutgoingTransferVersionName, OutgoingTransferVersion); |
277 | MaxOutgoingTransferVersion = maxTransferVersion; | ||
278 | |||
279 | m_myVersion = string.Format("{0}/{1}", OutgoingTransferVersionName, MaxOutgoingTransferVersion); | ||
280 | 247 | ||
281 | m_entityTransferStateMachine = new EntityTransferStateMachine(this); | 248 | m_entityTransferStateMachine = new EntityTransferStateMachine(this); |
282 | 249 | ||
@@ -789,8 +756,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
789 | m_interRegionTeleportAttempts.Value++; | 756 | m_interRegionTeleportAttempts.Value++; |
790 | 757 | ||
791 | m_log.DebugFormat( | 758 | m_log.DebugFormat( |
792 | "[ENTITY TRANSFER MODULE]: {0} max transfer version is {1}/{2}, {3} max version is {4}", | 759 | "[ENTITY TRANSFER MODULE]: {0} transfer version is {1}/{2}, {3} version is {4}", |
793 | sp.Scene.Name, OutgoingTransferVersionName, MaxOutgoingTransferVersion, finalDestination.RegionName, version); | 760 | sp.Scene.Name, OutgoingTransferVersionName, OutgoingTransferVersion, finalDestination.RegionName, version); |
794 | 761 | ||
795 | // Fixing a bug where teleporting while sitting results in the avatar ending up removed from | 762 | // Fixing a bug where teleporting while sitting results in the avatar ending up removed from |
796 | // both regions | 763 | // both regions |
@@ -877,7 +844,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
877 | if (versionComponents.Length >= 2) | 844 | if (versionComponents.Length >= 2) |
878 | float.TryParse(versionComponents[1], out versionNumber); | 845 | float.TryParse(versionComponents[1], out versionNumber); |
879 | 846 | ||
880 | if (versionNumber >= 0.2f && MaxOutgoingTransferVersion >= versionNumber) | 847 | if (versionNumber >= 0.2f) |
881 | TransferAgent_V2(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, OutSideViewRange , version, out reason); | 848 | TransferAgent_V2(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, OutSideViewRange , version, out reason); |
882 | else | 849 | else |
883 | TransferAgent_V1(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, OutSideViewRange, version, out reason); | 850 | TransferAgent_V1(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, OutSideViewRange, version, out reason); |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs index 9d4c282..de0ae4c 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs | |||
@@ -48,11 +48,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
48 | /// <summary> | 48 | /// <summary> |
49 | /// Version of this service. | 49 | /// Version of this service. |
50 | /// </summary> | 50 | /// </summary> |
51 | /// <remarks> | ||
52 | /// Currently valid versions are "SIMULATION/0.1" and "SIMULATION/0.2" | ||
53 | /// </remarks> | ||
54 | public string ServiceVersion { get; set; } | 51 | public string ServiceVersion { get; set; } |
55 | private float m_VersionNumber = 0.3f; | ||
56 | 52 | ||
57 | /// <summary> | 53 | /// <summary> |
58 | /// Map region ID to scene. | 54 | /// Map region ID to scene. |
@@ -85,22 +81,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
85 | 81 | ||
86 | public void InitialiseService(IConfigSource configSource) | 82 | public void InitialiseService(IConfigSource configSource) |
87 | { | 83 | { |
88 | ServiceVersion = "SIMULATION/0.3"; | 84 | ServiceVersion = String.Format("SIMULATION/{0}", VersionInfo.SimulationServiceVersion); |
89 | IConfig config = configSource.Configs["SimulationService"]; | 85 | m_log.InfoFormat("[LOCAL SIMULATION CONNECTOR]: Initialized with connector protocol version {0}", ServiceVersion); |
90 | if (config != null) | ||
91 | { | ||
92 | ServiceVersion = config.GetString("ConnectorProtocolVersion", ServiceVersion); | ||
93 | |||
94 | if (ServiceVersion != "SIMULATION/0.1" && ServiceVersion != "SIMULATION/0.2" && ServiceVersion != "SIMULATION/0.3") | ||
95 | throw new Exception(string.Format("Invalid ConnectorProtocolVersion {0}", ServiceVersion)); | ||
96 | |||
97 | string[] versionComponents = ServiceVersion.Split(new char[] { '/' }); | ||
98 | if (versionComponents.Length >= 2) | ||
99 | float.TryParse(versionComponents[1], out m_VersionNumber); | ||
100 | |||
101 | m_log.InfoFormat( | ||
102 | "[LOCAL SIMULATION CONNECTOR]: Initialized with connector protocol version {0}", ServiceVersion); | ||
103 | } | ||
104 | } | 86 | } |
105 | 87 | ||
106 | public void PostInitialise() | 88 | public void PostInitialise() |
diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs index 87c6810..bee3db3 100644 --- a/OpenSim/Services/HypergridService/GatekeeperService.cs +++ b/OpenSim/Services/HypergridService/GatekeeperService.cs | |||
@@ -454,9 +454,10 @@ namespace OpenSim.Services.HypergridService | |||
454 | 454 | ||
455 | string version; | 455 | string version; |
456 | 456 | ||
457 | string myversion = String.Format("SIMULATION/{0}", VersionInfo.SimulationServiceVersion); | ||
457 | if (!m_SimulationService.QueryAccess( | 458 | if (!m_SimulationService.QueryAccess( |
458 | destination, aCircuit.AgentID, aCircuit.ServiceURLs["HomeURI"].ToString(), | 459 | destination, aCircuit.AgentID, aCircuit.ServiceURLs["HomeURI"].ToString(), |
459 | true, aCircuit.startpos, "SIMULATION/0.3", new List<UUID>(), out version, out reason)) | 460 | true, aCircuit.startpos, myversion, new List<UUID>(), out version, out reason)) |
460 | return false; | 461 | return false; |
461 | 462 | ||
462 | return m_SimulationService.CreateAgent(source, destination, aCircuit, (uint)loginFlag, out reason); | 463 | return m_SimulationService.CreateAgent(source, destination, aCircuit, (uint)loginFlag, out reason); |
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index 847cc07..5829212 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs | |||
@@ -993,11 +993,11 @@ namespace OpenSim.Services.LLLoginService | |||
993 | 993 | ||
994 | private bool LaunchAgentDirectly(ISimulationService simConnector, GridRegion region, AgentCircuitData aCircuit, TeleportFlags flags, out string reason) | 994 | private bool LaunchAgentDirectly(ISimulationService simConnector, GridRegion region, AgentCircuitData aCircuit, TeleportFlags flags, out string reason) |
995 | { | 995 | { |
996 | string myversion = String.Format("SIMULATION/{0}", VersionInfo.SimulationServiceVersion); | ||
996 | string version; | 997 | string version; |
997 | 998 | ||
998 | if ( | 999 | if (!simConnector.QueryAccess( |
999 | !simConnector.QueryAccess( | 1000 | region, aCircuit.AgentID, null, true, aCircuit.startpos, myversion, new List<UUID>(), out version, out reason)) |
1000 | region, aCircuit.AgentID, null, true, aCircuit.startpos, "SIMULATION/0.3", new List<UUID>(), out version, out reason)) | ||
1001 | return false; | 1001 | return false; |
1002 | 1002 | ||
1003 | return simConnector.CreateAgent(null, region, aCircuit, (uint)flags, out reason); | 1003 | return simConnector.CreateAgent(null, region, aCircuit, (uint)flags, out reason); |
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 786c81b..3a40217 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini | |||
@@ -746,21 +746,6 @@ | |||
746 | ; Distance in meters that shouts should travel. Default is 100m | 746 | ; Distance in meters that shouts should travel. Default is 100m |
747 | shout_distance = 100 | 747 | shout_distance = 100 |
748 | 748 | ||
749 | |||
750 | [EntityTransfer] | ||
751 | ; The maximum protocol version that we will use for outgoing transfers | ||
752 | ; Valid values are | ||
753 | ; "SIMULATION/0.3" | ||
754 | ; - This is the default, and it supports teleports to variable-sized regions | ||
755 | ; - Older versions can teleport to this one, but only if the destination region | ||
756 | ; is 256x256 | ||
757 | ; "SIMULATION/0.2" | ||
758 | ; - A source simulator which only implements "SIMULATION/0.1" can still teleport with that protocol | ||
759 | ; - this protocol is more efficient than "SIMULATION/0.1" | ||
760 | ; "SIMULATION/0.1" | ||
761 | ; - this is an older teleport protocol used in OpenSimulator 0.7.5 and before. | ||
762 | MaxOutgoingTransferVersion = "SIMULATION/0.3" | ||
763 | |||
764 | ; The maximum distance in regions that an agent is allowed to teleport | 749 | ; The maximum distance in regions that an agent is allowed to teleport |
765 | ; along the x or y axis. This is set to 65535 because current viewers | 750 | ; along the x or y axis. This is set to 65535 because current viewers |
766 | ; can't handle teleports that are greater than this distance | 751 | ; can't handle teleports that are greater than this distance |
diff --git a/bin/config-include/Standalone.ini b/bin/config-include/Standalone.ini index 1fbd171..78ada2b 100644 --- a/bin/config-include/Standalone.ini +++ b/bin/config-include/Standalone.ini | |||
@@ -28,21 +28,6 @@ | |||
28 | GridInfoServiceInConnector = true | 28 | GridInfoServiceInConnector = true |
29 | MapImageServiceInConnector = true | 29 | MapImageServiceInConnector = true |
30 | 30 | ||
31 | [SimulationService] | ||
32 | ; This is the protocol version which the simulator advertises to the source destination when acting as a target destination for a teleport | ||
33 | ; It is used to control the teleport handoff process. | ||
34 | ; Valid values are | ||
35 | ; "SIMULATION/0.3" | ||
36 | ; - This is the default, and it supports teleports to variable-sized regions | ||
37 | ; - Older versions can teleport to this one, but only if the destination region | ||
38 | ; is 256x256 | ||
39 | ; "SIMULATION/0.2" | ||
40 | ; - A source simulator which only implements "SIMULATION/0.1" can still teleport with that protocol | ||
41 | ; - this protocol is more efficient than "SIMULATION/0.1" | ||
42 | ; "SIMULATION/0.1" | ||
43 | ; - this is an older teleport protocol used in OpenSimulator 0.7.5 and before. | ||
44 | ConnectorProtocolVersion = "SIMULATION/0.3" | ||
45 | |||
46 | [SimulationDataStore] | 31 | [SimulationDataStore] |
47 | LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService" | 32 | LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService" |
48 | 33 | ||
diff --git a/bin/config-include/StandaloneHypergrid.ini b/bin/config-include/StandaloneHypergrid.ini index 51f7fd0..eaacfff 100644 --- a/bin/config-include/StandaloneHypergrid.ini +++ b/bin/config-include/StandaloneHypergrid.ini | |||
@@ -39,21 +39,6 @@ | |||
39 | SimulationServiceInConnector = true | 39 | SimulationServiceInConnector = true |
40 | MapImageServiceInConnector = true | 40 | MapImageServiceInConnector = true |
41 | 41 | ||
42 | [SimulationService] | ||
43 | ; This is the protocol version which the simulator advertises to the source destination when acting as a target destination for a teleport | ||
44 | ; It is used to control the teleport handoff process. | ||
45 | ; Valid values are | ||
46 | ; "SIMULATION/0.3" | ||
47 | ; - This is the default, and it supports teleports to variable-sized regions | ||
48 | ; - Older versions can teleport to this one, but only if the destination region | ||
49 | ; is 256x256 | ||
50 | ; "SIMULATION/0.2" | ||
51 | ; - A source simulator which only implements "SIMULATION/0.1" can still teleport with that protocol | ||
52 | ; - this protocol is more efficient than "SIMULATION/0.1" | ||
53 | ; "SIMULATION/0.1" | ||
54 | ; - this is an older teleport protocol used in OpenSimulator 0.7.5 and before. | ||
55 | ConnectorProtocolVersion = "SIMULATION/0.3" | ||
56 | |||
57 | [Messaging] | 42 | [Messaging] |
58 | MessageTransferModule = HGMessageTransferModule | 43 | MessageTransferModule = HGMessageTransferModule |
59 | LureModule = HGLureModule | 44 | LureModule = HGLureModule |