diff --git a/OpenSim/Framework/Servers/ServerBase.cs b/OpenSim/Framework/Servers/ServerBase.cs index e403ba09f5..1a867fd734 100644 --- a/OpenSim/Framework/Servers/ServerBase.cs +++ b/OpenSim/Framework/Servers/ServerBase.cs @@ -873,7 +873,8 @@ namespace OpenSim.Framework.Servers protected string GetVersionText() { - return String.Format("Version: {0} (interface version {1})", m_version, VersionInfo.MajorInterfaceVersion); + return String.Format("Version: {0} (interface version {1}, SIMULATION/{2})", + m_version, VersionInfo.MajorInterfaceVersion, VersionInfo.SimulationServiceVersion); } /// diff --git a/OpenSim/Framework/VersionInfo.cs b/OpenSim/Framework/VersionInfo.cs index a285db07f9..0b48519026 100644 --- a/OpenSim/Framework/VersionInfo.cs +++ b/OpenSim/Framework/VersionInfo.cs @@ -60,17 +60,26 @@ namespace OpenSim /// /// This is the external interface version. It is separate from the OpenSimulator project version. /// - /// This version number should be - /// increased by 1 every time a code change makes the previous OpenSimulator revision incompatible - /// with the new revision. This will usually be due to interregion or grid facing interface changes. - /// - /// Changes which are compatible with an older revision (e.g. older revisions experience degraded functionality - /// but not outright failure) do not need a version number increment. - /// - /// Having this version number allows the grid service to reject connections from regions running a version - /// of the code that is too old. - /// /// public readonly static int MajorInterfaceVersion = 8; + + /// + /// This rules versioning regarding teleports, and compatibility between simulators in that regard. + /// + /// + /// + /// The protocol version that we will use for outgoing transfers + /// Valid values are + /// "SIMULATION/0.3" + /// - This is the latest, and it supports teleports to variable-sized regions + /// - Older versions can teleport to this one, but only if the destination region + /// is 256x256 + /// "SIMULATION/0.2" + /// - A source simulator which only implements "SIMULATION/0.1" can still teleport here + /// - this protocol is more efficient than "SIMULATION/0.1" + /// "SIMULATION/0.1" + /// - this is an older teleport protocol used in OpenSimulator 0.7.5 and before. + /// + public readonly static float SimulationServiceVersion = 0.3f; } } diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index f3acff2d1c..155a08566b 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 public const int DefaultMaxTransferDistance = 4095; public const bool WaitForAgentArrivedAtDestinationDefault = true; - public string OutgoingTransferVersionName { get; set; } + public static readonly string OutgoingTransferVersionName = "SIMULATION"; /// - /// Determine the maximum entity transfer version we will use for teleports. + /// Determine the entity transfer version we will use for teleports. /// - public float MaxOutgoingTransferVersion { get; set; } + public static readonly float OutgoingTransferVersion = VersionInfo.SimulationServiceVersion; /// /// The maximum distance, in standard region units (256m) that an agent is allowed to transfer. @@ -207,9 +207,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer /// protected virtual void InitialiseCommon(IConfigSource source) { - string transferVersionName = "SIMULATION"; - float maxTransferVersion = 0.3f; - IConfig hypergridConfig = source.Configs["Hypergrid"]; if (hypergridConfig != null) { @@ -225,33 +222,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer IConfig transferConfig = source.Configs["EntityTransfer"]; if (transferConfig != null) { - string rawVersion - = transferConfig.GetString( - "MaxOutgoingTransferVersion", - string.Format("{0}/{1}", transferVersionName, maxTransferVersion)); - - string[] rawVersionComponents = rawVersion.Split(new char[] { '/' }); - - bool versionValid = false; - - if (rawVersionComponents.Length >= 2) - versionValid = float.TryParse(rawVersionComponents[1], out maxTransferVersion); - - if (!versionValid) - { - m_log.ErrorFormat( - "[ENTITY TRANSFER MODULE]: MaxOutgoingTransferVersion {0} is invalid, using {1}", - rawVersion, string.Format("{0}/{1}", transferVersionName, maxTransferVersion)); - } - else - { - transferVersionName = rawVersionComponents[0]; - - m_log.InfoFormat( - "[ENTITY TRANSFER MODULE]: MaxOutgoingTransferVersion set to {0}", - string.Format("{0}/{1}", transferVersionName, maxTransferVersion)); - } - DisableInterRegionTeleportCancellation = transferConfig.GetBoolean("DisableInterRegionTeleportCancellation", false); @@ -265,9 +235,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer MaxTransferDistance = DefaultMaxTransferDistance; } - OutgoingTransferVersionName = transferVersionName; - MaxOutgoingTransferVersion = maxTransferVersion; - m_entityTransferStateMachine = new EntityTransferStateMachine(this); m_Enabled = true; @@ -760,7 +727,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer string reason; string version; - string myversion = string.Format("{0}/{1}", OutgoingTransferVersionName, MaxOutgoingTransferVersion); + string myversion = string.Format("{0}/{1}", OutgoingTransferVersionName, OutgoingTransferVersion); if (!Scene.SimulationService.QueryAccess( finalDestination, sp.ControllingClient.AgentId, homeURI, true, position, myversion, sp.Scene.GetFormatsOffered(), out version, out reason)) { @@ -779,8 +746,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer m_interRegionTeleportAttempts.Value++; m_log.DebugFormat( - "[ENTITY TRANSFER MODULE]: {0} max transfer version is {1}/{2}, {3} max version is {4}", - sp.Scene.Name, OutgoingTransferVersionName, MaxOutgoingTransferVersion, finalDestination.RegionName, version); + "[ENTITY TRANSFER MODULE]: {0} transfer version is {1}/{2}, {3} version is {4}", + sp.Scene.Name, OutgoingTransferVersionName, OutgoingTransferVersion, finalDestination.RegionName, version); // Fixing a bug where teleporting while sitting results in the avatar ending up removed from // both regions @@ -835,7 +802,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer if (versionComponents.Length >= 2) float.TryParse(versionComponents[1], out versionNumber); - if (versionNumber >= 0.2f && MaxOutgoingTransferVersion >= versionNumber) + if (versionNumber >= 0.2f) TransferAgent_V2(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, oldRegionX, newRegionX, oldRegionY, newRegionY, version, out reason); else TransferAgent_V1(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, oldRegionX, newRegionX, oldRegionY, newRegionY, version, out reason); @@ -1515,7 +1482,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer } // Check to see if we have access to the target region. - string myversion = string.Format("{0}/{1}", OutgoingTransferVersionName, MaxOutgoingTransferVersion); + string myversion = string.Format("{0}/{1}", OutgoingTransferVersionName, OutgoingTransferVersion); if (neighbourRegion != null && !scene.SimulationService.QueryAccess(neighbourRegion, agentID, homeURI, false, newpos, myversion, scene.GetFormatsOffered(), out version, out failureReason)) { diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs index adf3a910b4..3800b3f4f8 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 /// /// Version of this service. /// - /// - /// Currently valid versions are "SIMULATION/0.1" and "SIMULATION/0.2" - /// public string ServiceVersion { get; set; } - private float m_VersionNumber = 0.3f; /// /// Map region ID to scene. @@ -85,22 +81,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation public void InitialiseService(IConfigSource configSource) { - ServiceVersion = "SIMULATION/0.3"; - IConfig config = configSource.Configs["SimulationService"]; - if (config != null) - { - ServiceVersion = config.GetString("ConnectorProtocolVersion", ServiceVersion); - - if (ServiceVersion != "SIMULATION/0.1" && ServiceVersion != "SIMULATION/0.2" && ServiceVersion != "SIMULATION/0.3") - throw new Exception(string.Format("Invalid ConnectorProtocolVersion {0}", ServiceVersion)); - - string[] versionComponents = ServiceVersion.Split(new char[] { '/' }); - if (versionComponents.Length >= 2) - float.TryParse(versionComponents[1], out m_VersionNumber); - - m_log.InfoFormat( - "[LOCAL SIMULATION CONNECTOR]: Initialized with connector protocol version {0}", ServiceVersion); - } + ServiceVersion = String.Format("SIMULATION/{0}", VersionInfo.SimulationServiceVersion); + m_log.InfoFormat("[LOCAL SIMULATION CONNECTOR]: Initialized with connector protocol version {0}", ServiceVersion); } public void PostInitialise() diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs index 87c681033d..bee3db3ab0 100644 --- a/OpenSim/Services/HypergridService/GatekeeperService.cs +++ b/OpenSim/Services/HypergridService/GatekeeperService.cs @@ -454,9 +454,10 @@ namespace OpenSim.Services.HypergridService string version; + string myversion = String.Format("SIMULATION/{0}", VersionInfo.SimulationServiceVersion); if (!m_SimulationService.QueryAccess( destination, aCircuit.AgentID, aCircuit.ServiceURLs["HomeURI"].ToString(), - true, aCircuit.startpos, "SIMULATION/0.3", new List(), out version, out reason)) + true, aCircuit.startpos, myversion, new List(), out version, out reason)) return false; 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 10c2e8cb94..9e12f9d3b1 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs @@ -983,11 +983,11 @@ namespace OpenSim.Services.LLLoginService private bool LaunchAgentDirectly(ISimulationService simConnector, GridRegion region, AgentCircuitData aCircuit, TeleportFlags flags, out string reason) { + string myversion = String.Format("SIMULATION/{0}", VersionInfo.SimulationServiceVersion); string version; - if ( - !simConnector.QueryAccess( - region, aCircuit.AgentID, null, true, aCircuit.startpos, "SIMULATION/0.3", new List(), out version, out reason)) + if (!simConnector.QueryAccess( + region, aCircuit.AgentID, null, true, aCircuit.startpos, myversion, new List(), out version, out reason)) return false; return simConnector.CreateAgent(null, region, aCircuit, (uint)flags, out reason); diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 963eeffe07..f44100b729 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -746,21 +746,6 @@ ; Distance in meters that shouts should travel. Default is 100m shout_distance = 100 - -[EntityTransfer] - ; The maximum protocol version that we will use for outgoing transfers - ; Valid values are - ; "SIMULATION/0.3" - ; - This is the default, and it supports teleports to variable-sized regions - ; - Older versions can teleport to this one, but only if the destination region - ; is 256x256 - ; "SIMULATION/0.2" - ; - A source simulator which only implements "SIMULATION/0.1" can still teleport with that protocol - ; - this protocol is more efficient than "SIMULATION/0.1" - ; "SIMULATION/0.1" - ; - this is an older teleport protocol used in OpenSimulator 0.7.5 and before. - MaxOutgoingTransferVersion = "SIMULATION/0.3" - ; The maximum distance in regions that an agent is allowed to teleport ; along the x or y axis. This is set to 65535 because current viewers ; 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 1fbd171c2a..78ada2b7c3 100644 --- a/bin/config-include/Standalone.ini +++ b/bin/config-include/Standalone.ini @@ -28,21 +28,6 @@ GridInfoServiceInConnector = true MapImageServiceInConnector = true -[SimulationService] - ; This is the protocol version which the simulator advertises to the source destination when acting as a target destination for a teleport - ; It is used to control the teleport handoff process. - ; Valid values are - ; "SIMULATION/0.3" - ; - This is the default, and it supports teleports to variable-sized regions - ; - Older versions can teleport to this one, but only if the destination region - ; is 256x256 - ; "SIMULATION/0.2" - ; - A source simulator which only implements "SIMULATION/0.1" can still teleport with that protocol - ; - this protocol is more efficient than "SIMULATION/0.1" - ; "SIMULATION/0.1" - ; - this is an older teleport protocol used in OpenSimulator 0.7.5 and before. - ConnectorProtocolVersion = "SIMULATION/0.3" - [SimulationDataStore] LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService" diff --git a/bin/config-include/StandaloneHypergrid.ini b/bin/config-include/StandaloneHypergrid.ini index 51f7fd0939..eaacfff36a 100644 --- a/bin/config-include/StandaloneHypergrid.ini +++ b/bin/config-include/StandaloneHypergrid.ini @@ -39,21 +39,6 @@ SimulationServiceInConnector = true MapImageServiceInConnector = true -[SimulationService] - ; This is the protocol version which the simulator advertises to the source destination when acting as a target destination for a teleport - ; It is used to control the teleport handoff process. - ; Valid values are - ; "SIMULATION/0.3" - ; - This is the default, and it supports teleports to variable-sized regions - ; - Older versions can teleport to this one, but only if the destination region - ; is 256x256 - ; "SIMULATION/0.2" - ; - A source simulator which only implements "SIMULATION/0.1" can still teleport with that protocol - ; - this protocol is more efficient than "SIMULATION/0.1" - ; "SIMULATION/0.1" - ; - this is an older teleport protocol used in OpenSimulator 0.7.5 and before. - ConnectorProtocolVersion = "SIMULATION/0.3" - [Messaging] MessageTransferModule = HGMessageTransferModule LureModule = HGLureModule