diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index e179865e0e..a32f3c54e6 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -1412,6 +1412,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer public virtual void RequestTeleportLandmark(IClientAPI remoteClient, AssetLandmark lm, Vector3 lookAt) { + if (lm == null || lm.Data == null || lm.Data.Length == 0) + return; + ScenePresence sp = Scene.GetScenePresence(remoteClient.AgentId); if (sp == null || sp.IsDeleted || sp.IsInTransit || sp.IsChildAgent || sp.IsNPC) return; diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs index b131cc619d..b16f4ae826 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs @@ -543,6 +543,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer /// public override void RequestTeleportLandmark(IClientAPI remoteClient, AssetLandmark lm, Vector3 lookAt) { + if (lm == null || lm.Data == null || lm.Data.Length == 0) + return; + m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Teleporting agent via landmark to {0} region {1} position {2}", (string.IsNullOrEmpty(lm.Gatekeeper)) ? "local" : lm.Gatekeeper, lm.RegionID, lm.Position); @@ -595,7 +598,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer GatekeeperServiceConnector gConn = new GatekeeperServiceConnector(); GridRegion finalDestination = gConn.GetHyperlinkRegion(gatekeeper, lm.RegionID, remoteClient.AgentId, homeURI, out string message); if(finalDestination == null) + { remoteClient.SendTeleportFailed(message); + return; + } // Validate assorted conditions if (!ValidateGenericConditions(sp, gatekeeper, finalDestination, 0, out string reason)) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 0336c54181..93b06e1430 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -5174,7 +5174,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } AssetBase lma = World.AssetService.Get(assetID.ToString()); - if (lma == null) + if (lma == null || lma.Data == null || lma.Data.Length == 0) return; if (lma.Type != (sbyte)AssetType.Landmark)