From ea5aa82c2c3368f942f5b58ba2e13ce9a2d2b582 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Thu, 4 Jun 2015 06:58:07 -0700
Subject: Mantis #7567. Once again, avoiding prefetching  linked items within
 linked folders. Also fixing the inventory connector GetMultipleItems, so that
 if everything is in the cache, it returns successfully rather than
 unsuccessfully.

---
 .../Handlers/FetchInventory/FetchInvDescHandler.cs         | 14 --------------
 .../Connectors/Inventory/XInventoryServicesConnector.cs    | 10 +++++++++-
 2 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs
index 62ca8a3..7618c3d 100644
--- a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs
+++ b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs
@@ -728,20 +728,6 @@ namespace OpenSim.Capabilities.Handlers
 
                         itemsToReturn.InsertRange(0, links);
 
-                        foreach (InventoryItemBase link in linkedFolderContents.Items)
-                        {
-                            // 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,
-                            // but no viewer has been observed to set these up and this is the lazy way of avoiding cycles
-                            // rather than having to keep track of every folder requested in the recursion.
-                            if (link != null && link.AssetType == (int)AssetType.Link)
-                            {
-                                //m_log.DebugFormat(
-                                //    "[WEB FETCH INV DESC HANDLER]: Adding item {0} {1} from folder {2} linked from {3} ({4} {5})",
-                                //    link.Name, (AssetType)link.AssetType, linkedFolderContents.FolderID, contents.FolderID, link.ID, link.AssetID);
-                                itemIDs.Add(link.AssetID);
-                            }
-                        }
                     }
                 }
 
diff --git a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
index b123e9d..33ec485 100644
--- a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
+++ b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
@@ -555,6 +555,9 @@ namespace OpenSim.Services.Connectors
                     pending.Add(id);
             }
 
+            if (pending.Count == 0) // we're done, everything was in the cache
+                return itemArr;
+
             try
             {
                 Dictionary<string, object> resultSet = MakeRequest("GETMULTIPLEITEMS",
@@ -565,7 +568,12 @@ namespace OpenSim.Services.Connectors
                         });
 
                 if (!CheckReturn(resultSet))
-                    return null;
+                {
+                    if (i == 0)
+                        return null;
+                    else
+                        return itemArr;
+                }
 
                 // carry over index i where we left above
                 foreach (KeyValuePair<string, object> kvp in resultSet)
-- 
cgit v1.1