diff options
author | Diva Canto | 2015-06-04 06:58:07 -0700 |
---|---|---|
committer | Diva Canto | 2015-06-04 06:58:07 -0700 |
commit | ea5aa82c2c3368f942f5b58ba2e13ce9a2d2b582 (patch) | |
tree | 48fca79961c5ffbd15ef06afdbc2acce0b23f5bf | |
parent | Mantis #7567: added an 8-sec expiring item cache to the inventory network con... (diff) | |
download | opensim-SC_OLD-ea5aa82c2c3368f942f5b58ba2e13ce9a2d2b582.zip opensim-SC_OLD-ea5aa82c2c3368f942f5b58ba2e13ce9a2d2b582.tar.gz opensim-SC_OLD-ea5aa82c2c3368f942f5b58ba2e13ce9a2d2b582.tar.bz2 opensim-SC_OLD-ea5aa82c2c3368f942f5b58ba2e13ce9a2d2b582.tar.xz |
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.
-rw-r--r-- | OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs | 14 | ||||
-rw-r--r-- | OpenSim/Services/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 | |||
728 | 728 | ||
729 | itemsToReturn.InsertRange(0, links); | 729 | itemsToReturn.InsertRange(0, links); |
730 | 730 | ||
731 | foreach (InventoryItemBase link in linkedFolderContents.Items) | ||
732 | { | ||
733 | // Take care of genuinely broken links where the target doesn't exist | ||
734 | // HACK: Also, don't follow up links that just point to other links. In theory this is legitimate, | ||
735 | // but no viewer has been observed to set these up and this is the lazy way of avoiding cycles | ||
736 | // rather than having to keep track of every folder requested in the recursion. | ||
737 | if (link != null && link.AssetType == (int)AssetType.Link) | ||
738 | { | ||
739 | //m_log.DebugFormat( | ||
740 | // "[WEB FETCH INV DESC HANDLER]: Adding item {0} {1} from folder {2} linked from {3} ({4} {5})", | ||
741 | // link.Name, (AssetType)link.AssetType, linkedFolderContents.FolderID, contents.FolderID, link.ID, link.AssetID); | ||
742 | itemIDs.Add(link.AssetID); | ||
743 | } | ||
744 | } | ||
745 | } | 731 | } |
746 | } | 732 | } |
747 | 733 | ||
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 | |||
555 | pending.Add(id); | 555 | pending.Add(id); |
556 | } | 556 | } |
557 | 557 | ||
558 | if (pending.Count == 0) // we're done, everything was in the cache | ||
559 | return itemArr; | ||
560 | |||
558 | try | 561 | try |
559 | { | 562 | { |
560 | Dictionary<string, object> resultSet = MakeRequest("GETMULTIPLEITEMS", | 563 | Dictionary<string, object> resultSet = MakeRequest("GETMULTIPLEITEMS", |
@@ -565,7 +568,12 @@ namespace OpenSim.Services.Connectors | |||
565 | }); | 568 | }); |
566 | 569 | ||
567 | if (!CheckReturn(resultSet)) | 570 | if (!CheckReturn(resultSet)) |
568 | return null; | 571 | { |
572 | if (i == 0) | ||
573 | return null; | ||
574 | else | ||
575 | return itemArr; | ||
576 | } | ||
569 | 577 | ||
570 | // carry over index i where we left above | 578 | // carry over index i where we left above |
571 | foreach (KeyValuePair<string, object> kvp in resultSet) | 579 | foreach (KeyValuePair<string, object> kvp in resultSet) |