From 5e4d6cab00cb29cd088ab7b62ab13aff103b64cb Mon Sep 17 00:00:00 2001
From: onefang
Date: Sun, 19 May 2019 21:24:15 +1000
Subject: Dump OpenSim 0.9.0.1 into it's own branch.
---
.../Handlers/FetchInventory/FetchInvDescHandler.cs | 46 ++++++++++------------
1 file changed, 21 insertions(+), 25 deletions(-)
(limited to 'OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs')
diff --git a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs
index 7197049..53ed115 100644
--- a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs
+++ b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs
@@ -43,7 +43,7 @@ using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
- public class FetchInvDescHandler
+ public class FetchInvDescHandler
{
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -53,14 +53,14 @@ namespace OpenSim.Capabilities.Handlers
private IScene m_Scene;
// private object m_fetchLock = new Object();
- public FetchInvDescHandler(IInventoryService invService, ILibraryService libService, IScene s)
+ public FetchInvDescHandler(IInventoryService invService, ILibraryService libService, IScene s)
{
m_InventoryService = invService;
m_LibraryService = libService;
m_Scene = s;
}
-
+
public string FetchInventoryDescendentsRequest(string request, string path, string param, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
//m_log.DebugFormat("[XXX]: FetchInventoryDescendentsRequest in {0}, {1}", (m_Scene == null) ? "none" : m_Scene.Name, request);
@@ -72,14 +72,14 @@ namespace OpenSim.Capabilities.Handlers
// correctly mark it as a uuid
//
request = request.Replace("00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000");
-
+
// another hack 1 results in a
// System.ArgumentException: Object type System.Int32 cannot
// be converted to target type: System.Boolean
//
request = request.Replace("fetch_folders0", "fetch_folders0");
request = request.Replace("fetch_folders1", "fetch_folders1");
-
+
Hashtable hash = new Hashtable();
try
{
@@ -90,9 +90,9 @@ namespace OpenSim.Capabilities.Handlers
m_log.ErrorFormat("[WEB FETCH INV DESC HANDLER]: Fetch error: {0}{1}" + e.Message, e.StackTrace);
m_log.Error("Request: " + request);
}
-
+
ArrayList foldersrequested = (ArrayList)hash["folders"];
-
+
string response = "";
string bad_folders_response = "";
@@ -403,10 +403,7 @@ namespace OpenSim.Capabilities.Handlers
return contents;
}
contents = fetchedContents;
- InventoryFolderBase containingFolder = new InventoryFolderBase();
- containingFolder.ID = folderID;
- containingFolder.Owner = agentID;
- containingFolder = m_InventoryService.GetFolder(containingFolder);
+ InventoryFolderBase containingFolder = m_InventoryService.GetFolder(agentID, folderID);
if (containingFolder != null)
{
@@ -416,7 +413,7 @@ namespace OpenSim.Capabilities.Handlers
version = containingFolder.Version;
- if (fetchItems)
+ if (fetchItems && containingFolder.Type != (short)FolderType.Trash)
{
List itemsToReturn = contents.Items;
List originalItems = new List(itemsToReturn);
@@ -429,7 +426,7 @@ namespace OpenSim.Capabilities.Handlers
{
if (item.AssetType == (int)AssetType.Link)
{
- InventoryItemBase linkedItem = m_InventoryService.GetItem(new InventoryItemBase(item.AssetID));
+ InventoryItemBase linkedItem = m_InventoryService.GetItem(agentID, item.AssetID);
// Take care of genuinely broken links where the target doesn't exist
// HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
@@ -441,6 +438,10 @@ namespace OpenSim.Capabilities.Handlers
}
// Now scan for folder links and insert the items they target and those links at the head of the return data
+
+/* dont send contents of LinkFolders.
+from docs seems this was never a spec
+
foreach (InventoryItemBase item in originalItems)
{
if (item.AssetType == (int)AssetType.LinkFolder)
@@ -471,6 +472,7 @@ namespace OpenSim.Capabilities.Handlers
}
}
}
+*/
}
// foreach (InventoryItemBase item in contents.Items)
@@ -514,7 +516,7 @@ namespace OpenSim.Capabilities.Handlers
// }
// }
// }
-//
+//
// foreach (UUID linkedItemFolderId in linkedItemFolderIdsToSend)
// {
// m_log.DebugFormat(
@@ -654,10 +656,7 @@ namespace OpenSim.Capabilities.Handlers
// Must fetch it individually
else if (contents.FolderID == UUID.Zero)
{
- InventoryFolderBase containingFolder = new InventoryFolderBase();
- containingFolder.ID = freq.folder_id;
- containingFolder.Owner = freq.owner_id;
- containingFolder = m_InventoryService.GetFolder(containingFolder);
+ InventoryFolderBase containingFolder = m_InventoryService.GetFolder(freq.owner_id, freq.folder_id);
if (containingFolder != null)
{
@@ -723,8 +722,8 @@ namespace OpenSim.Capabilities.Handlers
if (item.AssetType == (int)AssetType.Link)
itemIDs.Add(item.AssetID);
- else if (item.AssetType == (int)AssetType.LinkFolder)
- folderIDs.Add(item.AssetID);
+// else if (item.AssetType == (int)AssetType.LinkFolder)
+// folderIDs.Add(item.AssetID);
}
//m_log.DebugFormat("[XXX]: folder {0} has {1} links and {2} linkfolders", contents.FolderID, itemIDs.Count, folderIDs.Count);
@@ -754,12 +753,9 @@ namespace OpenSim.Capabilities.Handlers
m_log.WarnFormat("[WEB FETCH INV DESC HANDLER]: GetMultipleItems failed. Falling back to fetching inventory items one by one.");
linked = new InventoryItemBase[itemIDs.Count];
int i = 0;
- InventoryItemBase item = new InventoryItemBase();
- item.Owner = freq.owner_id;
foreach (UUID id in itemIDs)
{
- item.ID = id;
- linked[i++] = m_InventoryService.GetItem(item);
+ linked[i++] = m_InventoryService.GetItem(freq.owner_id, id);
}
}
@@ -845,4 +841,4 @@ namespace OpenSim.Capabilities.Handlers
public InventoryCollection Collection;
public int Descendents;
}
-}
\ No newline at end of file
+}
--
cgit v1.1