diff options
author | Diva Canto | 2015-05-08 08:37:31 -0700 |
---|---|---|
committer | Diva Canto | 2015-05-08 08:37:31 -0700 |
commit | 3110b1661f04a501cb6a9b8173bed516211a5827 (patch) | |
tree | 294b31a4c0ab086794d90c24a1a4d8d9c5c12479 /OpenSim/Capabilities | |
parent | I shouldn't write code this early in the morning... Fixing a 'duh' on previou... (diff) | |
download | opensim-SC-3110b1661f04a501cb6a9b8173bed516211a5827.zip opensim-SC-3110b1661f04a501cb6a9b8173bed516211a5827.tar.gz opensim-SC-3110b1661f04a501cb6a9b8173bed516211a5827.tar.bz2 opensim-SC-3110b1661f04a501cb6a9b8173bed516211a5827.tar.xz |
Apparently Firestorm sometimes sends duplicate folder ids on the same request (see http://opensimulator.org/mantis/view.php?id=7054#c28297). This was throwing the new inventory download code off.
Firestorm also sends requests for folder UUID.Zero, which doesn't exist, but doesn't cause any problems either -- it just fails. I'm leaving the warning message for now, just to keep an eye on which folders can't be found, but may remove it in the future.
Diffstat (limited to 'OpenSim/Capabilities')
-rw-r--r-- | OpenSim/Capabilities/Handlers/FetchInventoryDescendents/FetchInvDescHandler.cs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/OpenSim/Capabilities/Handlers/FetchInventoryDescendents/FetchInvDescHandler.cs b/OpenSim/Capabilities/Handlers/FetchInventoryDescendents/FetchInvDescHandler.cs index e4ce1f3..27666f7 100644 --- a/OpenSim/Capabilities/Handlers/FetchInventoryDescendents/FetchInvDescHandler.cs +++ b/OpenSim/Capabilities/Handlers/FetchInventoryDescendents/FetchInvDescHandler.cs | |||
@@ -109,7 +109,9 @@ namespace OpenSim.Capabilities.Handlers | |||
109 | continue; | 109 | continue; |
110 | } | 110 | } |
111 | 111 | ||
112 | folders.Add(llsdRequest); | 112 | // Filter duplicate folder ids that bad viewers may send |
113 | if (folders.Find(f => f.folder_id == llsdRequest.folder_id) == null) | ||
114 | folders.Add(llsdRequest); | ||
113 | } | 115 | } |
114 | 116 | ||
115 | if (folders.Count > 0) | 117 | if (folders.Count > 0) |
@@ -540,6 +542,8 @@ namespace OpenSim.Capabilities.Handlers | |||
540 | List<LLSDFetchInventoryDescendents> libfolders = fetchFolders.FindAll(f => f.owner_id == m_LibraryService.LibraryRootFolder.Owner); | 542 | List<LLSDFetchInventoryDescendents> libfolders = fetchFolders.FindAll(f => f.owner_id == m_LibraryService.LibraryRootFolder.Owner); |
541 | fetchFolders.RemoveAll(f => libfolders.Contains(f)); | 543 | fetchFolders.RemoveAll(f => libfolders.Contains(f)); |
542 | 544 | ||
545 | //m_log.DebugFormat("[XXX]: Found {0} library folders in request", libfolders.Count); | ||
546 | |||
543 | foreach (LLSDFetchInventoryDescendents f in libfolders) | 547 | foreach (LLSDFetchInventoryDescendents f in libfolders) |
544 | { | 548 | { |
545 | if ((fold = m_LibraryService.LibraryRootFolder.FindFolder(f.folder_id)) != null) | 549 | if ((fold = m_LibraryService.LibraryRootFolder.FindFolder(f.folder_id)) != null) |
@@ -553,7 +557,7 @@ namespace OpenSim.Capabilities.Handlers | |||
553 | ret.Collection.Version = fold.Version; | 557 | ret.Collection.Version = fold.Version; |
554 | 558 | ||
555 | ret.Descendents = ret.Collection.Items.Count; | 559 | ret.Descendents = ret.Collection.Items.Count; |
556 | 560 | // m_log.DebugFormat("[XXX]: Added libfolder {0} ({1})", ret.Collection.FolderID, ret.Collection.OwnerID); | |
557 | result.Add(ret); | 561 | result.Add(ret); |
558 | } | 562 | } |
559 | } | 563 | } |
@@ -578,6 +582,8 @@ namespace OpenSim.Capabilities.Handlers | |||
578 | foreach (LLSDFetchInventoryDescendents f in fetchFolders) | 582 | foreach (LLSDFetchInventoryDescendents f in fetchFolders) |
579 | fids[i++] = f.folder_id; | 583 | fids[i++] = f.folder_id; |
580 | 584 | ||
585 | //m_log.DebugFormat("[XXX]: {0}", string.Join(",", fids)); | ||
586 | |||
581 | InventoryCollection[] fetchedContents = m_InventoryService.GetMultipleFoldersContent(fetchFolders[0].owner_id, fids); | 587 | InventoryCollection[] fetchedContents = m_InventoryService.GetMultipleFoldersContent(fetchFolders[0].owner_id, fids); |
582 | 588 | ||
583 | if (fetchedContents == null || (fetchedContents != null && fetchedContents.Length == 0)) | 589 | if (fetchedContents == null || (fetchedContents != null && fetchedContents.Length == 0)) |