From 3c85afbb431d14a676c00d20bfeeb5e2d13e8eaf Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Thu, 12 Sep 2013 11:46:12 -0400
Subject: Allow setting the EntityTransfer-max_distance to 0 to override
distance checks. This is to facilitate current viewer work fixing the
distance limitations for teleporting.
---
.../CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 3 +++
1 file changed, 3 insertions(+)
(limited to 'OpenSim/Region/CoreModules/Framework/EntityTransfer')
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 4219254..9302784 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -518,6 +518,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
///
private bool IsWithinMaxTeleportDistance(RegionInfo sourceRegion, GridRegion destRegion)
{
+ if(MaxTransferDistance == 0)
+ return true;
+
// m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Source co-ords are x={0} y={1}", curRegionX, curRegionY);
//
// m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Final dest is x={0} y={1} {2}@{3}",
--
cgit v1.1
From 979b17165b7e504385187ab082ef0a8cd50605bd Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 19 Sep 2013 22:45:50 +0100
Subject: For debug purposes, allow simulators to force use of earlier
SIMULATION/0.1 teleport protocol even if SIMULATION/0.2 is available.
This is specified in the MaxOutgoingTransferVersion attribute of [EntityTransfer] in OpenSim.ini, see OpenSimDefaults.ini for more details.
Default remains "SIMULATION/0.2"
Primarily for http://opensimulator.org/mantis/view.php?id=6755
---
.../EntityTransfer/EntityTransferModule.cs | 53 ++++++++++++++++++++--
1 file changed, 49 insertions(+), 4 deletions(-)
(limited to 'OpenSim/Region/CoreModules/Framework/EntityTransfer')
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 9302784..c1c8672 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -56,6 +56,13 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
public const int DefaultMaxTransferDistance = 4095;
public const bool WaitForAgentArrivedAtDestinationDefault = true;
+ public string OutgoingTransferVersionName { get; set; }
+
+ ///
+ /// Determine the maximum entity transfer version we will use for teleports.
+ ///
+ public float MaxOutgoingTransferVersion { get; set; }
+
///
/// The maximum distance, in standard region units (256m) that an agent is allowed to transfer.
///
@@ -151,9 +158,35 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
///
protected virtual void InitialiseCommon(IConfigSource source)
{
+ string transferVersionName = "SIMULATION";
+ float maxTransferVersion = 0.2f;
+
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];
+ }
+
DisableInterRegionTeleportCancellation
= transferConfig.GetBoolean("DisableInterRegionTeleportCancellation", false);
@@ -167,6 +200,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
MaxTransferDistance = DefaultMaxTransferDistance;
}
+ OutgoingTransferVersionName = transferVersionName;
+ MaxOutgoingTransferVersion = maxTransferVersion;
+
m_entityTransferStateMachine = new EntityTransferStateMachine(this);
m_Enabled = true;
@@ -623,7 +659,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
if (!sp.ValidateAttachments())
m_log.DebugFormat(
"[ENTITY TRANSFER MODULE]: Failed validation of all attachments for teleport of {0} from {1} to {2}. Continuing.",
- sp.Name, sp.Scene.RegionInfo.RegionName, finalDestination.RegionName);
+ sp.Name, sp.Scene.Name, finalDestination.RegionName);
string reason;
string version;
@@ -634,7 +670,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
m_log.DebugFormat(
"[ENTITY TRANSFER MODULE]: {0} was stopped from teleporting from {1} to {2} because {3}",
- sp.Name, sp.Scene.RegionInfo.RegionName, finalDestination.RegionName, reason);
+ sp.Name, sp.Scene.Name, finalDestination.RegionName, reason);
return;
}
@@ -644,7 +680,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
// as server attempts.
m_interRegionTeleportAttempts.Value++;
- m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Destination is running version {0}", version);
+ 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);
// Fixing a bug where teleporting while sitting results in the avatar ending up removed from
// both regions
@@ -689,7 +727,14 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath();
}
- if (version.Equals("SIMULATION/0.2"))
+ // We're going to fallback to V1 if the destination gives us anything smaller than 0.2 or we're forcing
+ // use of the earlier protocol
+ float versionNumber = 0.1f;
+ string[] versionComponents = version.Split(new char[] { '/' });
+ if (versionComponents.Length >= 2)
+ float.TryParse(versionComponents[1], out versionNumber);
+
+ if (versionNumber == 0.2f && MaxOutgoingTransferVersion >= versionNumber)
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);
--
cgit v1.1
From babfbe8d6d29380e42242008b6a743bc895ddb96 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 26 Sep 2013 00:31:33 +0100
Subject: minor: log MaxOutgoingTransferVersion at EntityTransferModule startup
---
.../CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 4 ++++
1 file changed, 4 insertions(+)
(limited to 'OpenSim/Region/CoreModules/Framework/EntityTransfer')
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index c1c8672..8ae81ac 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -185,6 +185,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
else
{
transferVersionName = rawVersionComponents[0];
+
+ m_log.InfoFormat(
+ "[ENTITY TRANSFER MODULE]: MaxOutgoingTransferVersion set to {0}",
+ string.Format("{0}/{1}", transferVersionName, maxTransferVersion));
}
DisableInterRegionTeleportCancellation
--
cgit v1.1
From d6d82dbd3c9d081209914351ff3cc18c349e362b Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 26 Sep 2013 20:13:29 +0100
Subject: minor: correct attachment spelling mistake in log message in
HGEntityTransferModule.OnIncomingSceneObject()
---
.../CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'OpenSim/Region/CoreModules/Framework/EntityTransfer')
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
index 76dbc72..04a0db6 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
@@ -181,7 +181,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
if (aCircuit.ServiceURLs != null && aCircuit.ServiceURLs.ContainsKey("AssetServerURI"))
{
string url = aCircuit.ServiceURLs["AssetServerURI"].ToString();
- m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Incoming attachement {0} for HG user {1} with asset server {2}", so.Name, so.AttachedAvatar, url);
+ m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Incoming attachment {0} for HG user {1} with asset server {2}", so.Name, so.AttachedAvatar, url);
Dictionary ids = new Dictionary();
HGUuidGatherer uuidGatherer = new HGUuidGatherer(Scene.AssetService, url);
uuidGatherer.GatherAssetUuids(so, ids);
--
cgit v1.1
From b16bc7b01ca0691758e66f85238d657f02271082 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 27 Sep 2013 19:14:21 +0100
Subject: refactor: rename Scene.IncomingCloseAgent() to CloseAgent() in order
to make it clear that all non-clientstack callers should be using this rather
than RemoveClient() in order to step through the ScenePresence state machine
properly.
Adds IScene.CloseAgent() to replace RemoveClient()
---
.../CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
(limited to 'OpenSim/Region/CoreModules/Framework/EntityTransfer')
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 8ae81ac..aa8a4db 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -972,7 +972,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg))
{
- if (!sp.Scene.IncomingPreCloseAgent(sp))
+ if (!sp.Scene.IncomingPreCloseClient(sp))
return;
// We need to delay here because Imprudence viewers, unlike v1 or v3, have a short (<200ms, <500ms) delay before
@@ -983,7 +983,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
// an agent cannot teleport back to this region if it has teleported away.
Thread.Sleep(2000);
- sp.Scene.IncomingCloseAgent(sp.UUID, false);
+ sp.Scene.CloseAgent(sp.UUID, false);
}
else
{
@@ -1137,7 +1137,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
// Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone
if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg))
{
- if (!sp.Scene.IncomingPreCloseAgent(sp))
+ if (!sp.Scene.IncomingPreCloseClient(sp))
return;
// RED ALERT!!!!
@@ -1154,7 +1154,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
m_log.DebugFormat(
"[ENTITY TRANSFER MODULE]: Closing agent {0} in {1} after teleport", sp.Name, Scene.Name);
- sp.Scene.IncomingCloseAgent(sp.UUID, false);
+ sp.Scene.CloseAgent(sp.UUID, false);
}
else
{
--
cgit v1.1