Prevent items being destroyed by rename operations. Renaming of a wearable also

sends an asset transaciton but it is empty. So we can't ignore name data
when a transaction is present and can't treat every transaction as valid.

Conflicts:

	OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
user_profiles
Melanie 2013-01-27 01:07:37 +00:00
parent b0cff35d96
commit 776cc33541
2 changed files with 8 additions and 6 deletions

View File

@ -321,7 +321,8 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
// to avoid a race condition when the appearance module retrieves the item to set the asset id in // to avoid a race condition when the appearance module retrieves the item to set the asset id in
// the AvatarAppearance structure. // the AvatarAppearance structure.
item.AssetID = m_asset.FullID; item.AssetID = m_asset.FullID;
m_Scene.InventoryService.UpdateItem(item); if (item.AssetID != UUID.Zero)
m_Scene.InventoryService.UpdateItem(item);
if (m_uploadState == UploadState.Complete) if (m_uploadState == UploadState.Complete)
{ {

View File

@ -407,16 +407,16 @@ namespace OpenSim.Region.Framework.Scenes
if (item.Owner != remoteClient.AgentId) if (item.Owner != remoteClient.AgentId)
return; return;
if (UUID.Zero == transactionID) item.Name = itemUpd.Name;
{ item.Description = itemUpd.Description;
item.Name = itemUpd.Name;
item.Description = itemUpd.Description;
// m_log.DebugFormat( // m_log.DebugFormat(
// "[USER INVENTORY]: itemUpd {0} {1} {2} {3}, item {4} {5} {6} {7}", // "[USER INVENTORY]: itemUpd {0} {1} {2} {3}, item {4} {5} {6} {7}",
// itemUpd.NextPermissions, itemUpd.GroupPermissions, itemUpd.EveryOnePermissions, item.Flags, // itemUpd.NextPermissions, itemUpd.GroupPermissions, itemUpd.EveryOnePermissions, item.Flags,
// item.NextPermissions, item.GroupPermissions, item.EveryOnePermissions, item.CurrentPermissions); // item.NextPermissions, item.GroupPermissions, item.EveryOnePermissions, item.CurrentPermissions);
if (itemUpd.NextPermissions != 0) // Use this to determine validity. Can never be 0 if valid
{
if (item.NextPermissions != (itemUpd.NextPermissions & item.BasePermissions)) if (item.NextPermissions != (itemUpd.NextPermissions & item.BasePermissions))
item.Flags |= (uint)InventoryItemFlags.ObjectOverwriteNextOwner; item.Flags |= (uint)InventoryItemFlags.ObjectOverwriteNextOwner;
item.NextPermissions = itemUpd.NextPermissions & item.BasePermissions; item.NextPermissions = itemUpd.NextPermissions & item.BasePermissions;
@ -451,7 +451,8 @@ namespace OpenSim.Region.Framework.Scenes
InventoryService.UpdateItem(item); InventoryService.UpdateItem(item);
} }
else
if (UUID.Zero != transactionID)
{ {
if (AgentTransactionsModule != null) if (AgentTransactionsModule != null)
{ {