diff options
author | Diva Canto | 2011-06-03 11:33:44 -0700 |
---|---|---|
committer | Diva Canto | 2011-06-03 11:33:44 -0700 |
commit | 623706d988d47c3c0f3d46b68e77f9c54038d3f5 (patch) | |
tree | 7c87042736599f739756bf184404a1d2c3bcbb97 /OpenSim | |
parent | oops (diff) | |
download | opensim-SC_OLD-623706d988d47c3c0f3d46b68e77f9c54038d3f5.zip opensim-SC_OLD-623706d988d47c3c0f3d46b68e77f9c54038d3f5.tar.gz opensim-SC_OLD-623706d988d47c3c0f3d46b68e77f9c54038d3f5.tar.bz2 opensim-SC_OLD-623706d988d47c3c0f3d46b68e77f9c54038d3f5.tar.xz |
HG Landmarks bug fix: pull landmark asset data from user's asset server when user is traveling.
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 3a9e4b7..cefceb0 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -8308,10 +8308,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8308 | if (lma == null) | 8308 | if (lma == null) |
8309 | { | 8309 | { |
8310 | // Failed to find landmark | 8310 | // Failed to find landmark |
8311 | TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel); | 8311 | |
8312 | tpCancel.Info.SessionID = tpReq.Info.SessionID; | 8312 | // Let's try to search in the user's home asset server |
8313 | tpCancel.Info.AgentID = tpReq.Info.AgentID; | 8313 | lma = FindAssetInUserAssetServer(lmid.ToString()); |
8314 | OutPacket(tpCancel, ThrottleOutPacketType.Task); | 8314 | |
8315 | if (lma == null) | ||
8316 | { | ||
8317 | // Really doesn't exist | ||
8318 | TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel); | ||
8319 | tpCancel.Info.SessionID = tpReq.Info.SessionID; | ||
8320 | tpCancel.Info.AgentID = tpReq.Info.AgentID; | ||
8321 | OutPacket(tpCancel, ThrottleOutPacketType.Task); | ||
8322 | } | ||
8315 | } | 8323 | } |
8316 | 8324 | ||
8317 | try | 8325 | try |
@@ -8356,6 +8364,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8356 | return true; | 8364 | return true; |
8357 | } | 8365 | } |
8358 | 8366 | ||
8367 | private AssetBase FindAssetInUserAssetServer(string id) | ||
8368 | { | ||
8369 | AgentCircuitData aCircuit = ((Scene)Scene).AuthenticateHandler.GetAgentCircuitData(CircuitCode); | ||
8370 | if (aCircuit != null && aCircuit.ServiceURLs != null && aCircuit.ServiceURLs.ContainsKey("AssetServerURI")) | ||
8371 | { | ||
8372 | string assetServer = aCircuit.ServiceURLs["AssetServerURI"].ToString(); | ||
8373 | return ((Scene)Scene).AssetService.Get(assetServer + "/" + id); | ||
8374 | } | ||
8375 | |||
8376 | return null; | ||
8377 | } | ||
8378 | |||
8359 | private bool HandleTeleportLocationRequest(IClientAPI sender, Packet Pack) | 8379 | private bool HandleTeleportLocationRequest(IClientAPI sender, Packet Pack) |
8360 | { | 8380 | { |
8361 | TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack; | 8381 | TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack; |