diff options
Diffstat (limited to 'OpenSim/Region')
3 files changed, 39 insertions, 11 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Lure/HGLureModule.cs b/OpenSim/Region/CoreModules/Avatar/Lure/HGLureModule.cs index a34f2d2..317f0e9 100644 --- a/OpenSim/Region/CoreModules/Avatar/Lure/HGLureModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Lure/HGLureModule.cs | |||
@@ -239,16 +239,27 @@ namespace OpenSim.Region.CoreModules.Avatar.Lure | |||
239 | GatekeeperServiceConnector gConn = new GatekeeperServiceConnector(); | 239 | GatekeeperServiceConnector gConn = new GatekeeperServiceConnector(); |
240 | GridRegion gatekeeper = new GridRegion(); | 240 | GridRegion gatekeeper = new GridRegion(); |
241 | gatekeeper.ServerURI = url; | 241 | gatekeeper.ServerURI = url; |
242 | GridRegion finalDestination = gConn.GetHyperlinkRegion(gatekeeper, new UUID(im.RegionID)); | 242 | string message; |
243 | GridRegion finalDestination = gConn.GetHyperlinkRegion(gatekeeper, new UUID(im.RegionID), out message); | ||
243 | if (finalDestination != null) | 244 | if (finalDestination != null) |
244 | { | 245 | { |
245 | ScenePresence sp = scene.GetScenePresence(client.AgentId); | 246 | ScenePresence sp = scene.GetScenePresence(client.AgentId); |
246 | IEntityTransferModule transferMod = scene.RequestModuleInterface<IEntityTransferModule>(); | 247 | IEntityTransferModule transferMod = scene.RequestModuleInterface<IEntityTransferModule>(); |
247 | 248 | ||
248 | if (transferMod != null && sp != null) | 249 | if (transferMod != null && sp != null) |
250 | { | ||
251 | if (message != null) | ||
252 | sp.ControllingClient.SendAgentAlertMessage(message, true); | ||
253 | |||
249 | transferMod.DoTeleport( | 254 | transferMod.DoTeleport( |
250 | sp, gatekeeper, finalDestination, im.Position + new Vector3(0.5f, 0.5f, 0f), | 255 | sp, gatekeeper, finalDestination, im.Position + new Vector3(0.5f, 0.5f, 0f), |
251 | Vector3.UnitX, teleportflags); | 256 | Vector3.UnitX, teleportflags); |
257 | } | ||
258 | } | ||
259 | else | ||
260 | { | ||
261 | m_log.InfoFormat("[HG LURE MODULE]: Lure failed: {0}", message); | ||
262 | client.SendAgentAlertMessage(message, true); | ||
252 | } | 263 | } |
253 | } | 264 | } |
254 | } | 265 | } |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index caeb4f8..92ea62c 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -529,14 +529,15 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
529 | 529 | ||
530 | if (reg != null) | 530 | if (reg != null) |
531 | { | 531 | { |
532 | finalDestination = GetFinalDestination(reg); | 532 | string message; |
533 | finalDestination = GetFinalDestination(reg, out message); | ||
533 | 534 | ||
534 | if (finalDestination == null) | 535 | if (finalDestination == null) |
535 | { | 536 | { |
536 | m_log.WarnFormat( "{0} Final destination is having problems. Unable to teleport {1} {2}", | 537 | m_log.WarnFormat( "{0} Final destination is having problems. Unable to teleport {1} {2}: {3}", |
537 | LogHeader, sp.Name, sp.UUID); | 538 | LogHeader, sp.Name, sp.UUID, message); |
538 | 539 | ||
539 | sp.ControllingClient.SendTeleportFailed("Problem at destination"); | 540 | sp.ControllingClient.SendTeleportFailed(message); |
540 | return; | 541 | return; |
541 | } | 542 | } |
542 | 543 | ||
@@ -557,6 +558,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
557 | return; | 558 | return; |
558 | } | 559 | } |
559 | 560 | ||
561 | if (message != null) | ||
562 | sp.ControllingClient.SendAgentAlertMessage(message, true); | ||
563 | |||
560 | // | 564 | // |
561 | // This is it | 565 | // This is it |
562 | // | 566 | // |
@@ -1327,8 +1331,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1327 | scene.SendKillObject(new List<uint> { localID }); | 1331 | scene.SendKillObject(new List<uint> { localID }); |
1328 | } | 1332 | } |
1329 | 1333 | ||
1330 | protected virtual GridRegion GetFinalDestination(GridRegion region) | 1334 | protected virtual GridRegion GetFinalDestination(GridRegion region, out string message) |
1331 | { | 1335 | { |
1336 | message = null; | ||
1332 | return region; | 1337 | return region; |
1333 | } | 1338 | } |
1334 | 1339 | ||
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs index e354522..fa05c90 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs | |||
@@ -225,19 +225,20 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
225 | 225 | ||
226 | #region HG overrides of IEntiryTransferModule | 226 | #region HG overrides of IEntiryTransferModule |
227 | 227 | ||
228 | protected override GridRegion GetFinalDestination(GridRegion region) | 228 | protected override GridRegion GetFinalDestination(GridRegion region, out string message) |
229 | { | 229 | { |
230 | int flags = Scene.GridService.GetRegionFlags(Scene.RegionInfo.ScopeID, region.RegionID); | 230 | int flags = Scene.GridService.GetRegionFlags(Scene.RegionInfo.ScopeID, region.RegionID); |
231 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: region {0} flags: {1}", region.RegionName, flags); | 231 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: region {0} flags: {1}", region.RegionName, flags); |
232 | message = null; | ||
232 | 233 | ||
233 | if ((flags & (int)OpenSim.Framework.RegionFlags.Hyperlink) != 0) | 234 | if ((flags & (int)OpenSim.Framework.RegionFlags.Hyperlink) != 0) |
234 | { | 235 | { |
235 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Destination region is hyperlink"); | 236 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Destination region is hyperlink"); |
236 | GridRegion real_destination = m_GatekeeperConnector.GetHyperlinkRegion(region, region.RegionID); | 237 | GridRegion real_destination = m_GatekeeperConnector.GetHyperlinkRegion(region, region.RegionID, out message); |
237 | if (real_destination != null) | 238 | if (real_destination != null) |
238 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: GetFinalDestination serveruri -> {0}", real_destination.ServerURI); | 239 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: GetFinalDestination: ServerURI={0}", real_destination.ServerURI); |
239 | else | 240 | else |
240 | m_log.WarnFormat("[HG ENTITY TRANSFER MODULE]: GetHyperlinkRegion to Gatekeeper {0} failed", region.ServerURI); | 241 | m_log.WarnFormat("[HG ENTITY TRANSFER MODULE]: GetHyperlinkRegion of region {0} from Gatekeeper {1} failed: {2}", region.RegionID, region.ServerURI, message); |
241 | return real_destination; | 242 | return real_destination; |
242 | } | 243 | } |
243 | 244 | ||
@@ -533,7 +534,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
533 | GatekeeperServiceConnector gConn = new GatekeeperServiceConnector(); | 534 | GatekeeperServiceConnector gConn = new GatekeeperServiceConnector(); |
534 | GridRegion gatekeeper = new GridRegion(); | 535 | GridRegion gatekeeper = new GridRegion(); |
535 | gatekeeper.ServerURI = lm.Gatekeeper; | 536 | gatekeeper.ServerURI = lm.Gatekeeper; |
536 | GridRegion finalDestination = gConn.GetHyperlinkRegion(gatekeeper, new UUID(lm.RegionID)); | 537 | string message; |
538 | GridRegion finalDestination = gConn.GetHyperlinkRegion(gatekeeper, new UUID(lm.RegionID), out message); | ||
537 | 539 | ||
538 | if (finalDestination != null) | 540 | if (finalDestination != null) |
539 | { | 541 | { |
@@ -541,9 +543,19 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
541 | IEntityTransferModule transferMod = scene.RequestModuleInterface<IEntityTransferModule>(); | 543 | IEntityTransferModule transferMod = scene.RequestModuleInterface<IEntityTransferModule>(); |
542 | 544 | ||
543 | if (transferMod != null && sp != null) | 545 | if (transferMod != null && sp != null) |
546 | { | ||
547 | if (message != null) | ||
548 | sp.ControllingClient.SendAgentAlertMessage(message, true); | ||
549 | |||
544 | transferMod.DoTeleport( | 550 | transferMod.DoTeleport( |
545 | sp, gatekeeper, finalDestination, lm.Position, Vector3.UnitX, | 551 | sp, gatekeeper, finalDestination, lm.Position, Vector3.UnitX, |
546 | (uint)(Constants.TeleportFlags.SetLastToTarget | Constants.TeleportFlags.ViaLandmark)); | 552 | (uint)(Constants.TeleportFlags.SetLastToTarget | Constants.TeleportFlags.ViaLandmark)); |
553 | } | ||
554 | } | ||
555 | else | ||
556 | { | ||
557 | remoteClient.SendTeleportFailed(message); | ||
558 | return; | ||
547 | } | 559 | } |
548 | 560 | ||
549 | } | 561 | } |