diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index f40f0787cc..1cbffc75f8 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs @@ -485,6 +485,14 @@ namespace OpenSim.Framework.Communications.Cache { if (HasInventory) { + if(item.Folder == LLUUID.Zero) + { + InventoryFolderImpl f=FindFolderForType(item.AssetType); + if(f != null) + item.Folder=f.ID; + else + item.Folder=RootFolder.ID; + } ItemReceive(item); m_commsManager.InventoryService.AddItem(item); } @@ -606,6 +614,22 @@ namespace OpenSim.Framework.Communications.Cache return true; } } + + private InventoryFolderImpl FindFolderForType(int type) + { + if(RootFolder == null) + return null; + + lock(RootFolder.SubFolders) + { + foreach (InventoryFolderImpl f in RootFolder.SubFolders.Values) + { + if(f.Type == type) + return f; + } + } + return null; + } } /// diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 0ab8779701..53ae28f089 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -371,7 +371,7 @@ namespace OpenSim.Region.Environment.Scenes itemCopy.Name = item.Name; itemCopy.AssetType = item.AssetType; itemCopy.InvType = item.InvType; - itemCopy.Folder = recipientUserInfo.RootFolder.ID; + itemCopy.Folder = LLUUID.Zero; if (ExternalChecks.ExternalChecksPropagatePermissions()) { if (item.InvType == 6)