aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorDiva Canto2015-10-18 16:06:31 -0700
committerDiva Canto2015-10-18 16:24:33 -0700
commit7ab633461ed65d1080b569532020379a068352b5 (patch)
treeec1efcb5e8d207e62b494f4d3ce404d6d61e1aaf /OpenSim
parentThe protocol version checking on the grid server connector seemed to have a b... (diff)
downloadopensim-SC-7ab633461ed65d1080b569532020379a068352b5.zip
opensim-SC-7ab633461ed65d1080b569532020379a068352b5.tar.gz
opensim-SC-7ab633461ed65d1080b569532020379a068352b5.tar.bz2
opensim-SC-7ab633461ed65d1080b569532020379a068352b5.tar.xz
Fixed merge conflicts
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. Conflicts: OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
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.cs47
-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, 35 insertions, 75 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);