If an asset upload transaction doesn't exist for a CreateInventory request,

simply process it as if UUID.Zero had been given.
avinationmerge
Melanie 2012-09-24 13:41:48 +02:00
parent 2d02405186
commit 6963b96bd0
4 changed files with 41 additions and 40 deletions

View File

@ -146,7 +146,7 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
} }
} }
public void RequestCreateInventoryItem(IClientAPI remoteClient, public bool RequestCreateInventoryItem(IClientAPI remoteClient,
UUID transactionID, UUID folderID, uint callbackID, UUID transactionID, UUID folderID, uint callbackID,
string description, string name, sbyte invType, string description, string name, sbyte invType,
sbyte type, byte wearableType, uint nextOwnerMask) sbyte type, byte wearableType, uint nextOwnerMask)
@ -160,14 +160,16 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
} }
if (uploader != null) if (uploader != null)
{
uploader.RequestCreateInventoryItem( uploader.RequestCreateInventoryItem(
remoteClient, transactionID, folderID, remoteClient, transactionID, folderID,
callbackID, description, name, invType, type, callbackID, description, name, invType, type,
wearableType, nextOwnerMask); wearableType, nextOwnerMask);
else
m_log.ErrorFormat( return true;
"[AGENT ASSET TRANSACTIONS]: Could not find uploader with transaction ID {0} when handling request to create inventory item {1} from {2}", }
transactionID, name, remoteClient.Name);
return false;
} }
/// <summary> /// <summary>

View File

@ -158,7 +158,7 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
/// <param name="type"></param> /// <param name="type"></param>
/// <param name="wearableType"></param> /// <param name="wearableType"></param>
/// <param name="nextOwnerMask"></param> /// <param name="nextOwnerMask"></param>
public void HandleItemCreationFromTransaction(IClientAPI remoteClient, public bool HandleItemCreationFromTransaction(IClientAPI remoteClient,
UUID transactionID, UUID folderID, uint callbackID, UUID transactionID, UUID folderID, uint callbackID,
string description, string name, sbyte invType, string description, string name, sbyte invType,
sbyte type, byte wearableType, uint nextOwnerMask) sbyte type, byte wearableType, uint nextOwnerMask)
@ -169,7 +169,7 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
AgentAssetTransactions transactions = AgentAssetTransactions transactions =
GetUserTransactions(remoteClient.AgentId); GetUserTransactions(remoteClient.AgentId);
transactions.RequestCreateInventoryItem(remoteClient, transactionID, return transactions.RequestCreateInventoryItem(remoteClient, transactionID,
folderID, callbackID, description, name, invType, type, folderID, callbackID, description, name, invType, type,
wearableType, nextOwnerMask); wearableType, nextOwnerMask);
} }

View File

@ -186,8 +186,18 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
if (folder == null || folder.Owner != remoteClient.AgentId) if (folder == null || folder.Owner != remoteClient.AgentId)
return; return;
if (transactionID == UUID.Zero) if (transactionID != UUID.Zero)
{ {
IAgentAssetTransactions agentTransactions = m_Scene.AgentTransactionsModule;
if (agentTransactions != null)
{
if (agentTransactions.HandleItemCreationFromTransaction(
remoteClient, transactionID, folderID, callbackID, description,
name, invType, assetType, wearableType, nextOwnerMask))
return;
}
}
ScenePresence presence; ScenePresence presence;
if (m_Scene.TryGetScenePresence(remoteClient.AgentId, out presence)) if (m_Scene.TryGetScenePresence(remoteClient.AgentId, out presence))
{ {
@ -215,17 +225,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
remoteClient.AgentId); remoteClient.AgentId);
} }
} }
else
{
IAgentAssetTransactions agentTransactions = m_Scene.AgentTransactionsModule;
if (agentTransactions != null)
{
agentTransactions.HandleItemCreationFromTransaction(
remoteClient, transactionID, folderID, callbackID, description,
name, invType, assetType, wearableType, nextOwnerMask);
}
}
}
protected virtual string GenerateLandmark(ScenePresence presence, out string prefix, out string suffix) protected virtual string GenerateLandmark(ScenePresence presence, out string prefix, out string suffix)
{ {

View File

@ -36,7 +36,7 @@ namespace OpenSim.Region.Framework.Interfaces
void HandleItemUpdateFromTransaction(IClientAPI remoteClient, UUID transactionID, void HandleItemUpdateFromTransaction(IClientAPI remoteClient, UUID transactionID,
InventoryItemBase item); InventoryItemBase item);
void HandleItemCreationFromTransaction(IClientAPI remoteClient, UUID transactionID, UUID folderID, bool HandleItemCreationFromTransaction(IClientAPI remoteClient, UUID transactionID, UUID folderID,
uint callbackID, string description, string name, sbyte invType, uint callbackID, string description, string name, sbyte invType,
sbyte type, byte wearableType, uint nextOwnerMask); sbyte type, byte wearableType, uint nextOwnerMask);