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.avinationmerge
parent
f1fbb774b6
commit
380b017e32
|
@ -339,7 +339,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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -401,17 +401,17 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (item.Owner != remoteClient.AgentId)
|
if (item.Owner != remoteClient.AgentId)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (UUID.Zero == transactionID)
|
item.Flags = (item.Flags & ~(uint)255) | (itemUpd.Flags & (uint)255);
|
||||||
{
|
item.Name = itemUpd.Name;
|
||||||
item.Flags = (item.Flags & ~(uint)255) | (itemUpd.Flags & (uint)255);
|
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;
|
||||||
|
@ -446,7 +446,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
InventoryService.UpdateItem(item);
|
InventoryService.UpdateItem(item);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
if (UUID.Zero != transactionID)
|
||||||
{
|
{
|
||||||
if (AgentTransactionsModule != null)
|
if (AgentTransactionsModule != null)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue