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.
parent
bac53387a9
commit
ea5aa82c2c
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
if (i == 0)
|
||||
return null;
|
||||
else
|
||||
return itemArr;
|
||||
}
|
||||
|
||||
// carry over index i where we left above
|
||||
foreach (KeyValuePair<string, object> kvp in resultSet)
|
||||
|
|
Loading…
Reference in New Issue