Shuffle order of code in invnetory connector GetFolderContent() calls to avoid a possible race condition
							parent
							
								
									42f1b88eb2
								
							
						
					
					
						commit
						8fb3e71b14
					
				| 
						 | 
				
			
			@ -185,15 +185,18 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
 | 
			
		|||
        public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
 | 
			
		||||
        {
 | 
			
		||||
            InventoryCollection invCol = m_InventoryService.GetFolderContent(userID, folderID);
 | 
			
		||||
            Util.FireAndForget(delegate
 | 
			
		||||
 | 
			
		||||
            if (UserManager != null)
 | 
			
		||||
            {
 | 
			
		||||
                if (UserManager != null)
 | 
			
		||||
                // Protect ourselves against the caller subsequently modifying the items list
 | 
			
		||||
                List<InventoryItemBase> items = new List<InventoryItemBase>(invCol.Items);
 | 
			
		||||
 | 
			
		||||
                Util.FireAndForget(delegate
 | 
			
		||||
                {
 | 
			
		||||
                    // Protect ourselves against the caller subsequently modifying the items list
 | 
			
		||||
                    foreach (InventoryItemBase item in new List<InventoryItemBase>(invCol.Items))
 | 
			
		||||
                    foreach (InventoryItemBase item in items)
 | 
			
		||||
                        UserManager.AddUser(item.CreatorIdAsUuid, item.CreatorData);
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return invCol;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -193,15 +193,18 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
 | 
			
		|||
        public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
 | 
			
		||||
        {
 | 
			
		||||
            InventoryCollection invCol = m_RemoteConnector.GetFolderContent(userID, folderID);
 | 
			
		||||
            Util.FireAndForget(delegate
 | 
			
		||||
 | 
			
		||||
            if (UserManager != null)
 | 
			
		||||
            {
 | 
			
		||||
                if (UserManager != null)
 | 
			
		||||
                // Protect ourselves against the caller subsequently modifying the items list
 | 
			
		||||
                List<InventoryItemBase> items = new List<InventoryItemBase>(invCol.Items);
 | 
			
		||||
 | 
			
		||||
                Util.FireAndForget(delegate
 | 
			
		||||
                {
 | 
			
		||||
                    // Protect ourselves against the caller subsequently modifying the items list
 | 
			
		||||
                    foreach (InventoryItemBase item in new List<InventoryItemBase>(invCol.Items))
 | 
			
		||||
                    foreach (InventoryItemBase item in items)
 | 
			
		||||
                        UserManager.AddUser(item.CreatorIdAsUuid, item.CreatorData);
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return invCol;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -875,7 +875,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
//                    m_log.DebugFormat(
 | 
			
		||||
//                        "[PRIM INVENTORY]: Not sending inventory data for part {0} {1} {2} for {3} since no items",
 | 
			
		||||
//                        m_part.Name, m_part.LocalId, m_part.UUID, client.Name);
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
                    client.SendTaskInventory(m_part.UUID, 0, new byte[0]);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue