diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs | 57 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 12 |
2 files changed, 46 insertions, 23 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs index c8e1e83..e053054 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs | |||
@@ -77,6 +77,8 @@ namespace OpenSim.Region.ClientStack.Linden | |||
77 | private Dictionary<UUID, string> m_capsDict = new Dictionary<UUID, string>(); | 77 | private Dictionary<UUID, string> m_capsDict = new Dictionary<UUID, string>(); |
78 | private static Thread[] m_workerThreads = null; | 78 | private static Thread[] m_workerThreads = null; |
79 | 79 | ||
80 | private string m_Url = "localhost"; | ||
81 | |||
80 | private static OpenMetaverse.BlockingQueue<aPollRequest> m_queue = | 82 | private static OpenMetaverse.BlockingQueue<aPollRequest> m_queue = |
81 | new OpenMetaverse.BlockingQueue<aPollRequest>(); | 83 | new OpenMetaverse.BlockingQueue<aPollRequest>(); |
82 | 84 | ||
@@ -88,6 +90,9 @@ namespace OpenSim.Region.ClientStack.Linden | |||
88 | 90 | ||
89 | public void Initialise(IConfigSource source) | 91 | public void Initialise(IConfigSource source) |
90 | { | 92 | { |
93 | IConfig config = source.Configs["ClientStack.LindenCaps"]; | ||
94 | if (config != null) | ||
95 | m_Url = config.GetString("Cap_GetTexture", "localhost"); | ||
91 | } | 96 | } |
92 | 97 | ||
93 | public void AddRegion(Scene s) | 98 | public void AddRegion(Scene s) |
@@ -345,32 +350,38 @@ namespace OpenSim.Region.ClientStack.Linden | |||
345 | 350 | ||
346 | private void RegisterCaps(UUID agentID, Caps caps) | 351 | private void RegisterCaps(UUID agentID, Caps caps) |
347 | { | 352 | { |
348 | m_URL = "/CAPS/" + UUID.Random() + "/"; | 353 | if (m_Url == "localhost") |
349 | |||
350 | // Register this as a poll service | ||
351 | PollServiceTextureEventArgs args = new PollServiceTextureEventArgs(agentID, m_scene); | ||
352 | |||
353 | args.Type = PollServiceEventArgs.EventType.Texture; | ||
354 | MainServer.Instance.AddPollServiceHTTPHandler(m_URL, args); | ||
355 | |||
356 | string hostName = m_scene.RegionInfo.ExternalHostName; | ||
357 | uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port; | ||
358 | string protocol = "http"; | ||
359 | |||
360 | if (MainServer.Instance.UseSSL) | ||
361 | { | 354 | { |
362 | hostName = MainServer.Instance.SSLCommonName; | 355 | string capUrl = "/CAPS/" + UUID.Random() + "/"; |
363 | port = MainServer.Instance.SSLPort; | ||
364 | protocol = "https"; | ||
365 | } | ||
366 | 356 | ||
367 | IExternalCapsModule handler = m_scene.RequestModuleInterface<IExternalCapsModule>(); | 357 | // Register this as a poll service |
368 | if (handler != null) | 358 | PollServiceTextureEventArgs args = new PollServiceTextureEventArgs(agentID, m_scene); |
369 | handler.RegisterExternalUserCapsHandler(agentID, caps, "GetTexture", m_URL); | 359 | |
360 | args.Type = PollServiceEventArgs.EventType.Texture; | ||
361 | MainServer.Instance.AddPollServiceHTTPHandler(capUrl, args); | ||
362 | |||
363 | string hostName = m_scene.RegionInfo.ExternalHostName; | ||
364 | uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port; | ||
365 | string protocol = "http"; | ||
366 | |||
367 | if (MainServer.Instance.UseSSL) | ||
368 | { | ||
369 | hostName = MainServer.Instance.SSLCommonName; | ||
370 | port = MainServer.Instance.SSLPort; | ||
371 | protocol = "https"; | ||
372 | } | ||
373 | IExternalCapsModule handler = m_scene.RequestModuleInterface<IExternalCapsModule>(); | ||
374 | if (handler != null) | ||
375 | handler.RegisterExternalUserCapsHandler(agentID, caps, "GetTexture", capUrl); | ||
376 | else | ||
377 | caps.RegisterHandler("GetTexture", String.Format("{0}://{1}:{2}{3}", protocol, hostName, port, capUrl)); | ||
378 | m_pollservices[agentID] = args; | ||
379 | m_capsDict[agentID] = capUrl; | ||
380 | } | ||
370 | else | 381 | else |
371 | caps.RegisterHandler("GetTexture", String.Format("{0}://{1}:{2}{3}", protocol, hostName, port, m_URL)); | 382 | { |
372 | m_pollservices[agentID] = args; | 383 | caps.RegisterHandler("GetTexture", m_Url); |
373 | m_capsDict[agentID] = m_URL; | 384 | } |
374 | } | 385 | } |
375 | 386 | ||
376 | private void DeregisterCaps(UUID agentID, Caps caps) | 387 | private void DeregisterCaps(UUID agentID, Caps caps) |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index dc28be8..36edd0b 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -4004,6 +4004,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4004 | part.Shape.ProfileHollow = 27500; | 4004 | part.Shape.ProfileHollow = 27500; |
4005 | } | 4005 | } |
4006 | } | 4006 | } |
4007 | else if (update.Entity is ScenePresence) | ||
4008 | { | ||
4009 | ScenePresence presence = (ScenePresence)update.Entity; | ||
4010 | |||
4011 | // If ParentUUID is not UUID.Zero and ParentID is 0, this | ||
4012 | // avatar is in the process of crossing regions while | ||
4013 | // sat on an object. In this state, we don't want any | ||
4014 | // updates because they will visually orbit the avatar. | ||
4015 | // Update will be forced once crossing is completed anyway. | ||
4016 | if (presence.ParentUUID != UUID.Zero && presence.ParentID == 0) | ||
4017 | continue; | ||
4018 | } | ||
4007 | 4019 | ||
4008 | ++updatesThisCall; | 4020 | ++updatesThisCall; |
4009 | 4021 | ||