diff --git a/OpenSim/Framework/Communications/Cache/AgentAssetTransactionsManager.cs b/OpenSim/Framework/Communications/Cache/AgentAssetTransactionsManager.cs index 70471ccd0f..c9c35d2573 100644 --- a/OpenSim/Framework/Communications/Cache/AgentAssetTransactionsManager.cs +++ b/OpenSim/Framework/Communications/Cache/AgentAssetTransactionsManager.cs @@ -81,28 +81,17 @@ namespace OpenSim.Framework.Communications.Cache /// Get the collection of asset transactions for the given user. /// /// - /// + /// null if this agent does not have an asset transactions collection public AgentAssetTransactions GetUserTransactions(LLUUID userID) { if (AgentTransactions.ContainsKey(userID)) { return AgentTransactions[userID]; } + return null; } - public void HandleInventoryFromTransaction(IClientAPI remoteClient, LLUUID transactionID, LLUUID folderID, - uint callbackID, string description, string name, sbyte invType, - sbyte type, byte wearableType, uint nextOwnerMask) - { - AgentAssetTransactions transactions = GetUserTransactions(remoteClient.AgentId); - if (transactions != null) - { - transactions.RequestCreateInventoryItem(remoteClient, transactionID, folderID, callbackID, description, - name, invType, type, wearableType, nextOwnerMask); - } - } - public void HandleUDPUploadRequest(IClientAPI remoteClient, LLUUID assetID, LLUUID transaction, sbyte type, byte[] data, bool storeLocal, bool tempFile) { diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 953dce72d5..0dc3139628 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -449,7 +449,7 @@ namespace OpenSim.Region.Environment.Scenes /// Create a new inventory item. /// /// - /// + /// /// /// /// @@ -458,14 +458,16 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - public void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID transActionID, LLUUID folderID, + public void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID transactionID, LLUUID folderID, uint callbackID, string description, string name, sbyte invType, sbyte assetType, byte wearableType, uint nextOwnerMask) { - if (transActionID == LLUUID.Zero) + if (transactionID == LLUUID.Zero) { - CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); + CachedUserInfo userInfo + = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); + if (userInfo != null) { AssetBase asset = CreateAsset(name, description, invType, assetType, null); @@ -473,13 +475,30 @@ namespace OpenSim.Region.Environment.Scenes CreateNewInventoryItem(remoteClient, folderID, callbackID, asset, nextOwnerMask); } + else + { + m_log.ErrorFormat( + "userInfo for agent uuid {0} unexpectedly null in CreateNewInventoryItem", + remoteClient.AgentId); + } } else { - CommsManager.TransactionsManager.HandleInventoryFromTransaction(remoteClient, transActionID, folderID, - callbackID, description, name, invType, - assetType, wearableType, nextOwnerMask); - //System.Console.WriteLine("request to create inventory item from transaction " + transActionID); + AgentAssetTransactions transactions + = CommsManager.TransactionsManager.GetUserTransactions(remoteClient.AgentId); + + if (transactions != null) + { + transactions.RequestCreateInventoryItem( + remoteClient, transactionID, folderID, callbackID, description, + name, invType, assetType, wearableType, nextOwnerMask); + } + else + { + m_log.ErrorFormat( + "Agent asset transactions for agent {0} uuid {1} in transaction uuid {2} unexpectedly null!", + remoteClient.Name, remoteClient.AgentId, transactionID); + } } }