aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-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
-rw-r--r--bin/OpenSimDefaults.ini15
-rw-r--r--bin/config-include/Standalone.ini15
-rw-r--r--bin/config-include/StandaloneHypergrid.ini15
9 files changed, 36 insertions, 121 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);
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini
index 963eeff..f44100b 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