aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorDiva Canto2015-10-18 16:06:31 -0700
committerDiva Canto2015-10-18 16:06:31 -0700
commit70a46fe0907c822a5244e36c338bf559ffbec965 (patch)
tree6b275cb6256e90e000cbef4b3ce00380912dda99 /OpenSim
parentThe protocol version checking on the grid server connector seemed to have a b... (diff)
downloadopensim-SC-70a46fe0907c822a5244e36c338bf559ffbec965.zip
opensim-SC-70a46fe0907c822a5244e36c338bf559ffbec965.tar.gz
opensim-SC-70a46fe0907c822a5244e36c338bf559ffbec965.tar.bz2
opensim-SC-70a46fe0907c822a5244e36c338bf559ffbec965.tar.xz
Clean up of simulation version, the number that rules the compatibility of teleports:
- It's not configurable anymore, it's fixed in code. Each number means an increase in features of the teleport procedure - Its definition moved to the global VersionInfo class As of now it's still 0.3.
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/Servers/ServerBase.cs3
-rw-r--r--OpenSim/Framework/VersionInfo.cs29
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs49
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs22
-rw-r--r--OpenSim/Services/HypergridService/GatekeeperService.cs3
-rw-r--r--OpenSim/Services/LLLoginService/LLLoginService.cs6
6 files changed, 36 insertions, 76 deletions
diff --git a/OpenSim/Framework/Servers/ServerBase.cs b/OpenSim/Framework/Servers/ServerBase.cs
index e403ba0..1a867fd 100644
--- a/OpenSim/Framework/Servers/ServerBase.cs
+++ b/OpenSim/Framework/Servers/ServerBase.cs
@@ -873,7 +873,8 @@ namespace OpenSim.Framework.Servers
873 873
874 protected string GetVersionText() 874 protected 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 f3acff2..155a085 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 public 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 public float MaxOutgoingTransferVersion { get; set; } 65 public static readonly float OutgoingTransferVersion = VersionInfo.SimulationServiceVersion;
66 66
67 /// <summary> 67 /// <summary>
68 /// The maximum distance, in standard region units (256m) that an agent is allowed to transfer. 68 /// 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
207 /// <param name="source"></param> 207 /// <param name="source"></param>
208 protected virtual void InitialiseCommon(IConfigSource source) 208 protected virtual void InitialiseCommon(IConfigSource source)
209 { 209 {
210 string transferVersionName = "SIMULATION";
211 float maxTransferVersion = 0.3f;
212
213 IConfig hypergridConfig = source.Configs["Hypergrid"]; 210 IConfig hypergridConfig = source.Configs["Hypergrid"];
214 if (hypergridConfig != null) 211 if (hypergridConfig != null)
215 { 212 {
@@ -225,33 +222,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
225 IConfig transferConfig = source.Configs["EntityTransfer"]; 222 IConfig transferConfig = source.Configs["EntityTransfer"];
226 if (transferConfig != null) 223 if (transferConfig != null)
227 { 224 {
228 string rawVersion
229 = transferConfig.GetString(
230 "MaxOutgoingTransferVersion",
231 string.Format("{0}/{1}", transferVersionName, maxTransferVersion));
232
233 string[] rawVersionComponents = rawVersion.Split(new char[] { '/' });
234
235 bool versionValid = false;
236
237 if (rawVersionComponents.Length >= 2)
238 versionValid = float.TryParse(rawVersionComponents[1], out maxTransferVersion);
239
240 if (!versionValid)
241 {
242 m_log.ErrorFormat(
243 "[ENTITY TRANSFER MODULE]: MaxOutgoingTransferVersion {0} is invalid, using {1}",
244 rawVersion, string.Format("{0}/{1}", transferVersionName, maxTransferVersion));
245 }
246 else
247 {
248 transferVersionName = rawVersionComponents[0];
249
250 m_log.InfoFormat(
251 "[ENTITY TRANSFER MODULE]: MaxOutgoingTransferVersion set to {0}",
252 string.Format("{0}/{1}", transferVersionName, maxTransferVersion));
253 }
254
255 DisableInterRegionTeleportCancellation 225 DisableInterRegionTeleportCancellation
256 = transferConfig.GetBoolean("DisableInterRegionTeleportCancellation", false); 226 = transferConfig.GetBoolean("DisableInterRegionTeleportCancellation", false);
257 227
@@ -265,9 +235,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
265 MaxTransferDistance = DefaultMaxTransferDistance; 235 MaxTransferDistance = DefaultMaxTransferDistance;
266 } 236 }
267 237
268 OutgoingTransferVersionName = transferVersionName;
269 MaxOutgoingTransferVersion = maxTransferVersion;
270
271 m_entityTransferStateMachine = new EntityTransferStateMachine(this); 238 m_entityTransferStateMachine = new EntityTransferStateMachine(this);
272 239
273 m_Enabled = true; 240 m_Enabled = true;
@@ -760,7 +727,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
760 727
761 string reason; 728 string reason;
762 string version; 729 string version;
763 string myversion = string.Format("{0}/{1}", OutgoingTransferVersionName, MaxOutgoingTransferVersion); 730 string myversion = string.Format("{0}/{1}", OutgoingTransferVersionName, OutgoingTransferVersion);
764 if (!Scene.SimulationService.QueryAccess( 731 if (!Scene.SimulationService.QueryAccess(
765 finalDestination, sp.ControllingClient.AgentId, homeURI, true, position, myversion, sp.Scene.GetFormatsOffered(), out version, out reason)) 732 finalDestination, sp.ControllingClient.AgentId, homeURI, true, position, myversion, sp.Scene.GetFormatsOffered(), out version, out reason))
766 { 733 {
@@ -779,8 +746,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
779 m_interRegionTeleportAttempts.Value++; 746 m_interRegionTeleportAttempts.Value++;
780 747
781 m_log.DebugFormat( 748 m_log.DebugFormat(
782 "[ENTITY TRANSFER MODULE]: {0} max transfer version is {1}/{2}, {3} max version is {4}", 749 "[ENTITY TRANSFER MODULE]: {0} transfer version is {1}/{2}, {3} version is {4}",
783 sp.Scene.Name, OutgoingTransferVersionName, MaxOutgoingTransferVersion, finalDestination.RegionName, version); 750 sp.Scene.Name, OutgoingTransferVersionName, OutgoingTransferVersion, finalDestination.RegionName, version);
784 751
785 // 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
786 // both regions 753 // both regions
@@ -835,7 +802,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
835 if (versionComponents.Length >= 2) 802 if (versionComponents.Length >= 2)
836 float.TryParse(versionComponents[1], out versionNumber); 803 float.TryParse(versionComponents[1], out versionNumber);
837 804
838 if (versionNumber >= 0.2f && MaxOutgoingTransferVersion >= versionNumber) 805 if (versionNumber >= 0.2f)
839 TransferAgent_V2(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, oldRegionX, newRegionX, oldRegionY, newRegionY, version, out reason); 806 TransferAgent_V2(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, oldRegionX, newRegionX, oldRegionY, newRegionY, version, out reason);
840 else 807 else
841 TransferAgent_V1(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, oldRegionX, newRegionX, oldRegionY, newRegionY, version, out reason); 808 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
1515 } 1482 }
1516 1483
1517 // Check to see if we have access to the target region. 1484 // Check to see if we have access to the target region.
1518 string myversion = string.Format("{0}/{1}", OutgoingTransferVersionName, MaxOutgoingTransferVersion); 1485 string myversion = string.Format("{0}/{1}", OutgoingTransferVersionName, OutgoingTransferVersion);
1519 if (neighbourRegion != null 1486 if (neighbourRegion != null
1520 && !scene.SimulationService.QueryAccess(neighbourRegion, agentID, homeURI, false, newpos, myversion, scene.GetFormatsOffered(), out version, out failureReason)) 1487 && !scene.SimulationService.QueryAccess(neighbourRegion, agentID, homeURI, false, newpos, myversion, scene.GetFormatsOffered(), out version, out failureReason))
1521 { 1488 {
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
index adf3a91..3800b3f 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 10c2e8c..9e12f9d 100644
--- a/OpenSim/Services/LLLoginService/LLLoginService.cs
+++ b/OpenSim/Services/LLLoginService/LLLoginService.cs
@@ -983,11 +983,11 @@ namespace OpenSim.Services.LLLoginService
983 983
984 private bool LaunchAgentDirectly(ISimulationService simConnector, GridRegion region, AgentCircuitData aCircuit, TeleportFlags flags, out string reason) 984 private bool LaunchAgentDirectly(ISimulationService simConnector, GridRegion region, AgentCircuitData aCircuit, TeleportFlags flags, out string reason)
985 { 985 {
986 string myversion = String.Format("SIMULATION/{0}", VersionInfo.SimulationServiceVersion);
986 string version; 987 string version;
987 988
988 if ( 989 if (!simConnector.QueryAccess(
989 !simConnector.QueryAccess( 990 region, aCircuit.AgentID, null, true, aCircuit.startpos, myversion, new List<UUID>(), out version, out reason))
990 region, aCircuit.AgentID, null, true, aCircuit.startpos, "SIMULATION/0.3", new List<UUID>(), out version, out reason))
991 return false; 991 return false;
992 992
993 return simConnector.CreateAgent(null, region, aCircuit, (uint)flags, out reason); 993 return simConnector.CreateAgent(null, region, aCircuit, (uint)flags, out reason);