From 8fb3e71b14e28bf8a4ddb72e3d1b529128f090ce Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Thu, 15 Sep 2011 18:36:22 +0100 Subject: Shuffle order of code in invnetory connector GetFolderContent() calls to avoid a possible race condition --- .../Inventory/RemoteXInventoryServiceConnector.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs') diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs index c9c716c..73ab4e3 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs @@ -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 items = new List(invCol.Items); + + Util.FireAndForget(delegate { - // Protect ourselves against the caller subsequently modifying the items list - foreach (InventoryItemBase item in new List(invCol.Items)) + foreach (InventoryItemBase item in items) UserManager.AddUser(item.CreatorIdAsUuid, item.CreatorData); - } - }); + }); + } return invCol; } -- cgit v1.1