From f71ed7eb79091de370800362f716d214dd27b03a Mon Sep 17 00:00:00 2001
From: Melanie
Date: Mon, 20 Aug 2012 15:35:06 +0200
Subject: Fix scripted detach of temp attachments

---
 .../Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs    | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 88ca9db..951afd7 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -526,10 +526,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
 
         public void DetachSingleAttachmentToInv(IScenePresence sp, SceneObjectGroup so)
         {
-            // As per Linden spec, detach (take) is disabled for temp attachs
-            if (so.FromItemID == UUID.Zero)
-                return;
-
             lock (sp.AttachmentsSyncLock)
             {
                 // Save avatar attachment information
@@ -1050,7 +1046,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
             ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId);
             SceneObjectGroup group = m_scene.GetGroupByPrim(objectLocalID);
 
-            if (sp != null && group != null)
+            if (sp != null && group != null && group.FromItemID != UUID.Zero)
                 DetachSingleAttachmentToInv(sp, group);
         }
 
@@ -1068,7 +1064,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
     
                     foreach (SceneObjectGroup group in attachments)
                     {
-                        if (group.FromItemID == itemID)
+                        if (group.FromItemID == itemID && group.FromItemID != UUID.Zero)
                         {
                             DetachSingleAttachmentToInv(sp, group);
                             return;
-- 
cgit v1.1


From f2ac1b9e8aa80a250cba46fec1aa7cf97c6caaf8 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Tue, 21 Aug 2012 16:41:08 +0200
Subject: Add Camera Offsets to serialization

---
 .../Scenes/Serialization/SceneObjectSerializer.cs          | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
index 0d292e7..134bd9d 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
@@ -386,6 +386,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
             m_SOPXmlProcessors.Add("Friction", ProcessFriction);
             m_SOPXmlProcessors.Add("Bounce", ProcessBounce);
             m_SOPXmlProcessors.Add("GravityModifier", ProcessGravityModifier);
+            m_SOPXmlProcessors.Add("CameraEyeOffset", ProcessCameraEyeOffset);
+            m_SOPXmlProcessors.Add("CameraAtOffset", ProcessCameraAtOffset);
 
             #endregion
 
@@ -639,6 +641,16 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
             obj.GravityModifier = reader.ReadElementContentAsFloat("GravityModifier", String.Empty);
         }
 
+        private static void ProcessCameraEyeOffset(SceneObjectPart obj, XmlTextReader reader)
+        {
+            obj.SetCameraEyeOffset(Util.ReadVector(reader, "CameraEyeOffset"));
+        }
+
+        private static void ProcessCameraAtOffset(SceneObjectPart obj, XmlTextReader reader)
+        {
+            obj.SetCameraAtOffset(Util.ReadVector(reader, "CameraAtOffset"));
+        }
+
         private static void ProcessVehicle(SceneObjectPart obj, XmlTextReader reader)
         {
             SOPVehicle vehicle = SOPVehicle.FromXml2(reader);
@@ -1355,6 +1367,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
                 writer.WriteElementString("Bounce", sop.Bounciness.ToString().ToLower());
             if (sop.GravityModifier != 1.0f)
                 writer.WriteElementString("GravityModifier", sop.GravityModifier.ToString().ToLower());
+            WriteVector(writer, "CameraEyeOffset", sop.GetCameraEyeOffset());
+            WriteVector(writer, "CameraAtOffset", sop.GetCameraAtOffset());
 
             writer.WriteEndElement();
         }
-- 
cgit v1.1


From 26224704de9c641cebcc0b47197e1c5a677861cf Mon Sep 17 00:00:00 2001
From: Melanie
Date: Tue, 21 Aug 2012 19:24:41 +0200
Subject: Cause a persistence save if prim flags change

---
 OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 6104c66..cb4aa2d 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -3306,6 +3306,8 @@ namespace OpenSim.Region.Framework.Scenes
         /// <param name="SetVolumeDetect"></param>
         public void UpdatePrimFlags(uint localID, bool UsePhysics, bool SetTemporary, bool SetPhantom, bool SetVolumeDetect)
         {
+            HasGroupChanged = true;
+
             SceneObjectPart selectionPart = GetPart(localID);
 
             if (SetTemporary && Scene != null)
-- 
cgit v1.1


From 8d2a37c5a48fbe822ebe138b65c33b25c9899e4c Mon Sep 17 00:00:00 2001
From: Melanie
Date: Tue, 21 Aug 2012 20:13:55 +0200
Subject: Implement seeing busy status in LSL

---
 OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index d6aafaf..3e1b43e 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -6090,6 +6090,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 flags |= ScriptBaseClass.AGENT_AWAY;
             }
 
+            UUID busy = new UUID("efcf670c-2d18-8128-973a-034ebc806b67");
+            UUID[] anims = agent.Animator.GetAnimationArray();
+            if (Array.Exists<UUID>(anims, a => { return a == busy; }))
+            {
+                flags |= ScriptBaseClass.AGENT_BUSY;
+            }
+
             // seems to get unset, even if in mouselook, when avatar is sitting on a prim???
             if ((agent.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0)
             {
-- 
cgit v1.1


From 5273b6880a9682a57798c5808e04b7dc6dca8c0f Mon Sep 17 00:00:00 2001
From: Melanie
Date: Tue, 21 Aug 2012 21:20:20 +0200
Subject: Allow updates sent for right pec to go to the client

---
 OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 8cac731..ddd8f18 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -3809,7 +3809,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
                     if (part.ParentGroup.IsAttachment)
                     {   // Someone else's HUD, why are we getting these?
                         if (part.ParentGroup.OwnerID != AgentId &&
-                            part.ParentGroup.RootPart.Shape.State >= 30)
+                            part.ParentGroup.RootPart.Shape.State > 30)
                             continue;
                         ScenePresence sp;
                         // Owner is not in the sim, don't update it to
-- 
cgit v1.1


From 526445c39456763577d0b013ccab8af16a9edee0 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Tue, 21 Aug 2012 23:28:00 +0200
Subject: Fix group return stuff

---
 OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 0b73df5..f8c0431 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -2050,7 +2050,7 @@ namespace OpenSim.Region.Framework.Scenes
                         if (Permissions.CanReturnObjects(
                                         null,
                                         remoteClient.AgentId,
-                                        deleteGroups))
+                                        new List<SceneObjectGroup>() {grp}))
                         {
                             permissionToTake = true;
                             permissionToDelete = true;
-- 
cgit v1.1


From 450207d4d8004aadbbc7146869132e8245d58ada Mon Sep 17 00:00:00 2001
From: Melanie
Date: Wed, 22 Aug 2012 00:27:54 +0200
Subject: Make terrain save every 1000 frames instead of every 50. Database
 load is a sim killer.

---
 OpenSim/Region/Framework/Scenes/Scene.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index a5f0bff..57fcf51 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -215,7 +215,7 @@ namespace OpenSim.Region.Framework.Scenes
         private int m_update_presences = 1; // Update scene presence movements
         private int m_update_events = 1;
         private int m_update_backup = 200;
-        private int m_update_terrain = 50;
+        private int m_update_terrain = 1000;
         private int m_update_land = 10;
         private int m_update_coarse_locations = 50;
 
-- 
cgit v1.1


From c1a0c7fad17bb2aead1539b61fe82fee16686190 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 23 Aug 2012 23:09:32 +0200
Subject: Fix bad child prim permissions that can make objects change perms
 after rezzing

---
 OpenSim/Region/Framework/Scenes/Scene.Inventory.cs  |  3 +++
 OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 18 +++++++++++++++---
 OpenSim/Region/Framework/Scenes/SceneObjectPart.cs  | 21 +++++++++++++++++++++
 3 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index f8c0431..1309623 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1983,6 +1983,9 @@ namespace OpenSim.Region.Framework.Scenes
 
                 SceneObjectGroup grp = part.ParentGroup;
 
+                // If child prims have invalid perms, fix them
+                grp.AdjustChildPrimPermissions();
+
                 if (remoteClient == null)
                 {
                     // Autoreturn has a null client. Nothing else does. So
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index cb4aa2d..eee53d7 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2852,6 +2852,9 @@ namespace OpenSim.Region.Framework.Scenes
             // Can't do this yet since backup still makes use of the root part without any synchronization
 //            objectGroup.m_rootPart = null;
 
+            // If linking prims with different permissions, fix them
+            AdjustChildPrimPermissions();
+
             AttachToBackup();
 
             // Here's the deal, this is ABSOLUTELY CRITICAL so the physics scene gets the update about the 
@@ -3391,12 +3394,21 @@ namespace OpenSim.Region.Framework.Scenes
             }
         }
 
+        public void AdjustChildPrimPermissions()
+        {
+            ForEachPart(part =>
+            {
+                if (part != RootPart)
+                    part.ClonePermissions(RootPart);
+            });
+        }
+
         public void UpdatePermissions(UUID AgentID, byte field, uint localID,
                 uint mask, byte addRemTF)
         {
-            SceneObjectPart[] parts = m_parts.GetArray();
-            for (int i = 0; i < parts.Length; i++)
-                parts[i].UpdatePermissions(AgentID, field, localID, mask, addRemTF);
+            RootPart.UpdatePermissions(AgentID, field, localID, mask, addRemTF);
+
+            AdjustChildPrimPermissions();
 
             HasGroupChanged = true;
 
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index ce652b4..ed626d0 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -4487,6 +4487,27 @@ namespace OpenSim.Region.Framework.Scenes
             }
         }
 
+        public void ClonePermissions(SceneObjectPart source)
+        {
+            bool update = false;
+
+            if (BaseMask != source.BaseMask ||
+                OwnerMask != source.OwnerMask ||
+                GroupMask != source.GroupMask ||
+                EveryoneMask != source.EveryoneMask ||
+                NextOwnerMask != source.NextOwnerMask)
+                update = true;
+
+            BaseMask = source.BaseMask;
+            OwnerMask = source.OwnerMask;
+            GroupMask = source.GroupMask;
+            EveryoneMask = source.EveryoneMask;
+            NextOwnerMask = source.NextOwnerMask;
+
+            if (update)
+                SendFullUpdateToAllClients();
+        }
+
         public bool IsHingeJoint()
         {
             // For now, we use the NINJA naming scheme for identifying joints.
-- 
cgit v1.1


From 7e17f4296e91129990c15cdaaa1689922a57f9aa Mon Sep 17 00:00:00 2001
From: Melanie
Date: Fri, 24 Aug 2012 23:48:01 +0200
Subject: Fix background inventory loading (Viewer 3) so it won't lag out the
 sim

---
 .../Servers/HttpServer/PollServiceEventArgs.cs     |   3 +-
 .../HttpServer/PollServiceRequestManager.cs        |   3 +-
 .../Linden/Caps/WebFetchInvDescModule.cs           | 152 ++++++++++++++-------
 3 files changed, 107 insertions(+), 51 deletions(-)

diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs
index bb43cd2..c24a000 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs
@@ -51,7 +51,8 @@ namespace OpenSim.Framework.Servers.HttpServer
         public enum EventType : int
         {
             Normal = 0,
-            LslHttp = 1
+            LslHttp = 1,
+            Inventory = 2
         }
 
         public PollServiceEventArgs(
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
index a385110..a1dee4e 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
@@ -231,7 +231,8 @@ namespace OpenSim.Framework.Servers.HttpServer
         {
             if (m_running)
             {
-                if (req.PollServiceArgs.Type == PollServiceEventArgs.EventType.LslHttp)
+                if (req.PollServiceArgs.Type == PollServiceEventArgs.EventType.LslHttp ||
+                    req.PollServiceArgs.Type == PollServiceEventArgs.EventType.Inventory)
                 {
                     m_requests.Enqueue(req);
                 }
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
index 2359bd6..61387ed 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
@@ -27,12 +27,15 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 using System.Reflection;
+using System.Threading;
 using log4net;
 using Nini.Config;
 using Mono.Addins;
 using OpenMetaverse;
 using OpenSim.Framework;
+using OpenSim.Framework.Servers;
 using OpenSim.Framework.Servers.HttpServer;
 using OpenSim.Region.Framework.Interfaces;
 using OpenSim.Region.Framework.Scenes;
@@ -48,67 +51,49 @@ namespace OpenSim.Region.ClientStack.Linden
     [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
     public class WebFetchInvDescModule : INonSharedRegionModule
     {
-//        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
         private Scene m_scene;
 
         private IInventoryService m_InventoryService;
         private ILibraryService m_LibraryService;
 
-        private bool m_Enabled;
+        private WebFetchInvDescHandler m_webFetchHandler;
 
-        private string m_fetchInventoryDescendents2Url;
-        private string m_webFetchInventoryDescendentsUrl;
+        private ManualResetEvent m_ev = new ManualResetEvent(true);
+        private object m_lock = new object();
 
-        private WebFetchInvDescHandler m_webFetchHandler;
+        private Dictionary<UUID, string> m_capsDict = new Dictionary<UUID, string>();
+        private Dictionary<UUID, Hashtable> m_requests = new Dictionary<UUID, Hashtable>();
 
         #region ISharedRegionModule Members
 
         public void Initialise(IConfigSource source)
         {
-            IConfig config = source.Configs["ClientStack.LindenCaps"];
-            if (config == null)
-                return;
-
-            m_fetchInventoryDescendents2Url = config.GetString("Cap_FetchInventoryDescendents2", string.Empty);
-            m_webFetchInventoryDescendentsUrl = config.GetString("Cap_WebFetchInventoryDescendents", string.Empty);
-
-            if (m_fetchInventoryDescendents2Url != string.Empty || m_webFetchInventoryDescendentsUrl != string.Empty)
-            {
-                m_Enabled = true;
-            }
         }
 
         public void AddRegion(Scene s)
         {
-            if (!m_Enabled)
-                return;
-
             m_scene = s;
         }
 
         public void RemoveRegion(Scene s)
         {
-            if (!m_Enabled)
-                return;
-
             m_scene.EventManager.OnRegisterCaps -= RegisterCaps;
+            m_scene.EventManager.OnDeregisterCaps -= DeregisterCaps;
             m_scene = null;
         }
 
         public void RegionLoaded(Scene s)
         {
-            if (!m_Enabled)
-                return;
-
             m_InventoryService = m_scene.InventoryService;
             m_LibraryService = m_scene.LibraryService;
 
             // We'll reuse the same handler for all requests.
-            if (m_fetchInventoryDescendents2Url == "localhost" || m_webFetchInventoryDescendentsUrl == "localhost")
-                m_webFetchHandler = new WebFetchInvDescHandler(m_InventoryService, m_LibraryService);
+            m_webFetchHandler = new WebFetchInvDescHandler(m_InventoryService, m_LibraryService);
 
             m_scene.EventManager.OnRegisterCaps += RegisterCaps;
+            m_scene.EventManager.OnDeregisterCaps += DeregisterCaps;
         }
 
         public void PostInitialise()
@@ -128,41 +113,110 @@ namespace OpenSim.Region.ClientStack.Linden
 
         private void RegisterCaps(UUID agentID, Caps caps)
         {
-            if (m_webFetchInventoryDescendentsUrl != "")
-                RegisterFetchCap(agentID, caps, "WebFetchInventoryDescendents", m_webFetchInventoryDescendentsUrl);
+            string capUrl = "/CAPS/" + UUID.Random() + "/";
+
+            // Register this as a poll service
+            PollServiceEventArgs args = new PollServiceEventArgs(HttpRequestHandler, HasEvents, GetEvents, NoEvents, agentID, 300000);
+            args.Type = PollServiceEventArgs.EventType.Inventory;
+            MainServer.Instance.AddPollServiceHTTPHandler(capUrl, args);
+
+            string hostName = m_scene.RegionInfo.ExternalHostName;
+            uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port;
+            string protocol = "http";
+            
+            if (MainServer.Instance.UseSSL)
+            {
+                hostName = MainServer.Instance.SSLCommonName;
+                port = MainServer.Instance.SSLPort;
+                protocol = "https";
+            }
+            caps.RegisterHandler("FetchInventoryDescendents2", String.Format("{0}://{1}:{2}{3}", protocol, hostName, port, capUrl));
 
-            if (m_fetchInventoryDescendents2Url != "")
-                RegisterFetchCap(agentID, caps, "FetchInventoryDescendents2", m_fetchInventoryDescendents2Url);
+            m_capsDict[agentID] = capUrl;
         }
 
-        private void RegisterFetchCap(UUID agentID, Caps caps, string capName, string url)
+        private void DeregisterCaps(UUID agentID, Caps caps)
         {
             string capUrl;
 
-            if (url == "localhost")
+            if (m_capsDict.TryGetValue(agentID, out capUrl))
             {
-                capUrl = "/CAPS/" + UUID.Random();
+                MainServer.Instance.RemoveHTTPHandler("", capUrl);
+                m_capsDict.Remove(agentID);
+            }
+        }
 
-                IRequestHandler reqHandler
-                    = new RestStreamHandler(
-                        "POST",
-                        capUrl,
-                        m_webFetchHandler.FetchInventoryDescendentsRequest,
-                        "FetchInventoryDescendents2",
-                        agentID.ToString());
+        public void HttpRequestHandler(UUID requestID, Hashtable request)
+        {
+            m_log.DebugFormat("[FETCH2]: Received request {0}", requestID);
+            m_requests[requestID] = request;
+        }
 
-                caps.RegisterHandler(capName, reqHandler);
+        private bool HasEvents(UUID requestID, UUID sessionID)
+        {
+            lock (m_lock)
+            {
+                if (m_ev.WaitOne(0))
+                {
+                    m_ev.Reset();
+                    return true;
+                }
+                return false;
             }
-            else
+        }
+
+        private Hashtable NoEvents(UUID requestID, UUID sessionID)
+        {
+            m_requests.Remove(requestID);
+
+            Hashtable response = new Hashtable();
+
+            response["int_response_code"] = 500;
+            response["str_response_string"] = "Script timeout";
+            response["content_type"] = "text/plain";
+            response["keepalive"] = false;
+            response["reusecontext"] = false;
+
+            return response;
+        }
+
+        private Hashtable GetEvents(UUID requestID, UUID sessionID, string request)
+        {
+            Hashtable response = new Hashtable();
+
+            response["int_response_code"] = 500;
+            response["str_response_string"] = "Internal error";
+            response["content_type"] = "text/plain";
+            response["keepalive"] = false;
+            response["reusecontext"] = false;
+
+            try
             {
-                capUrl = url;
+                Hashtable requestHash;
+                if (!m_requests.TryGetValue(requestID, out requestHash))
+                {
+                    lock (m_lock)
+                        m_ev.Set();
+                    response["str_response_string"] = "Invalid request";
+                    return response;
+                }
+
+                m_log.DebugFormat("[FETCH2]: Processed request {0}", requestID);
 
-                caps.RegisterHandler(capName, capUrl);
+                string reply = m_webFetchHandler.FetchInventoryDescendentsRequest(requestHash["body"].ToString(), String.Empty, String.Empty, null, null);
+
+                m_requests.Remove(requestID);
+
+                response["int_response_code"] = 200;
+                response["str_response_string"] = reply;
+            }
+            finally
+            {
+                lock (m_lock)
+                    m_ev.Set();
             }
 
-//            m_log.DebugFormat(
-//                "[WEB FETCH INV DESC MODULE]: Registered capability {0} at {1} in region {2} for {3}",
-//                capName, capUrl, m_scene.RegionInfo.RegionName, agentID);
+            return response;
         }
     }
-}
\ No newline at end of file
+}
-- 
cgit v1.1


From 6d48dbf8caaf862d096bf5a7d39fb1a28afe46b7 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Fri, 24 Aug 2012 23:49:31 +0200
Subject: Remove debug spam

---
 OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
index 61387ed..b77ead3 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
@@ -148,7 +148,7 @@ namespace OpenSim.Region.ClientStack.Linden
 
         public void HttpRequestHandler(UUID requestID, Hashtable request)
         {
-            m_log.DebugFormat("[FETCH2]: Received request {0}", requestID);
+//            m_log.DebugFormat("[FETCH2]: Received request {0}", requestID);
             m_requests[requestID] = request;
         }
 
@@ -201,7 +201,7 @@ namespace OpenSim.Region.ClientStack.Linden
                     return response;
                 }
 
-                m_log.DebugFormat("[FETCH2]: Processed request {0}", requestID);
+//                m_log.DebugFormat("[FETCH2]: Processed request {0}", requestID);
 
                 string reply = m_webFetchHandler.FetchInventoryDescendentsRequest(requestHash["body"].ToString(), String.Empty, String.Empty, null, null);
 
-- 
cgit v1.1