aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Communications/Local/LocalInventoryService.cs64
1 files changed, 35 insertions, 29 deletions
diff --git a/OpenSim/Region/Communications/Local/LocalInventoryService.cs b/OpenSim/Region/Communications/Local/LocalInventoryService.cs
index d4560be..4ff4e96 100644
--- a/OpenSim/Region/Communications/Local/LocalInventoryService.cs
+++ b/OpenSim/Region/Communications/Local/LocalInventoryService.cs
@@ -48,43 +48,49 @@ namespace OpenSim.Region.Communications.Local
48 { 48 {
49 m_log.InfoFormat("[LOCAL INVENTORY SERVICE]: Requesting inventory for user {0}", userID); 49 m_log.InfoFormat("[LOCAL INVENTORY SERVICE]: Requesting inventory for user {0}", userID);
50 50
51 List<InventoryFolderBase> skeletonFolders = GetInventorySkeleton(userID);
52 if (skeletonFolders == null)
53 return;
54
55 InventoryFolderImpl rootFolder = null;
56
57 List<InventoryFolderImpl> folders = new List<InventoryFolderImpl>(); 51 List<InventoryFolderImpl> folders = new List<InventoryFolderImpl>();
58 List<InventoryItemBase> items = new List<InventoryItemBase>(); 52 List<InventoryItemBase> items = new List<InventoryItemBase>();
59 53
60 // Need to retrieve the root folder on the first pass 54 List<InventoryFolderBase> skeletonFolders = GetInventorySkeleton(userID);
61 foreach (InventoryFolderBase folder in skeletonFolders) 55
56 if (skeletonFolders != null)
62 { 57 {
63 if (folder.ParentID == UUID.Zero) 58
64 { 59 InventoryFolderImpl rootFolder = null;
65 rootFolder = new InventoryFolderImpl(folder);
66 folders.Add(rootFolder);
67 items.AddRange(RequestFolderItems(rootFolder.ID));
68 break; // Only 1 root folder per user
69 }
70 }
71 60
72 if (rootFolder != null) 61 // Need to retrieve the root folder on the first pass
62 foreach (InventoryFolderBase folder in skeletonFolders)
63 {
64 if (folder.ParentID == UUID.Zero)
65 {
66 rootFolder = new InventoryFolderImpl(folder);
67 folders.Add(rootFolder);
68 items.AddRange(RequestFolderItems(rootFolder.ID));
69 break; // Only 1 root folder per user
70 }
71 }
72
73 if (rootFolder != null)
74 {
75 foreach (InventoryFolderBase folder in skeletonFolders)
76 {
77 if (folder.ID != rootFolder.ID)
78 {
79 folders.Add(new InventoryFolderImpl(folder));
80 items.AddRange(RequestFolderItems(folder.ID));
81 }
82 }
83 }
84
85 m_log.InfoFormat(
86 "[LOCAL INVENTORY SERVICE]: Received inventory response for user {0} containing {1} folders and {2} items",
87 userID, folders.Count, items.Count);
88 }
89 else
73 { 90 {
74 foreach (InventoryFolderBase folder in skeletonFolders) 91 m_log.WarnFormat( "[LOCAL INVENTORY SERVICE]: User {0} inventory not available", userID);
75 {
76 if (folder.ID != rootFolder.ID)
77 {
78 folders.Add(new InventoryFolderImpl(folder));
79 items.AddRange(RequestFolderItems(folder.ID));
80 }
81 }
82 } 92 }
83 93
84 m_log.InfoFormat(
85 "[LOCAL INVENTORY SERVICE]: Received inventory response for user {0} containing {1} folders and {2} items",
86 userID, folders.Count, items.Count);
87
88 callback(folders, items); 94 callback(folders, items);
89 } 95 }
90 96