From 9b762a5a84004c2d5585a34e2fc10f41a7e626fd Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 4 Feb 2012 00:20:27 +0000 Subject: Only look for an uploaded transactional asset in Scene.UpdateTaskInventory if we have been passed a non-zero transaction ID. This resolves the recent regression from deeb728 where notecards could not be saved in prim inventories. This looks like a better solution than deeb728 since only non-caps updates pass in a transaction ID. Hopefully resolves http://opensimulator.org/mantis/view.php?id=5873 --- OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 39 +++++++++++----------- .../Scenes/Tests/SceneObjectScriptTests.cs | 2 +- .../Scenes/Tests/ScenePresenceAgentTests.cs | 2 +- 3 files changed, 21 insertions(+), 22 deletions(-) (limited to 'OpenSim/Region/Framework') diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index dd3208a..6d7559e 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1473,26 +1473,25 @@ namespace OpenSim.Region.Framework.Scenes // "[PRIM INVENTORY]: Updating item {0} in {1} for UpdateTaskInventory()", // currentItem.Name, part.Name); - // Viewers from at least Linden Lab 1.23 onwards use a capability to update script contents rather - // than UDP. With viewers from at least 1.23 onwards, changing properties on scripts (e.g. renaming) causes - // this to spew spurious errors and "thing saved" messages. - // Rather than retaining complexity in the code and removing useful error messages, I'm going to - // comment this section out. If this was still working for very old viewers and there is - // a large population using them which cannot upgrade to 1.23 or derivatives then we can revisit - // this - justincc -// IAgentAssetTransactions agentTransactions = this.RequestModuleInterface(); -// if (agentTransactions != null) -// { -// agentTransactions.HandleTaskItemUpdateFromTransaction( -// remoteClient, part, transactionID, currentItem); -// -// if ((InventoryType)itemInfo.InvType == InventoryType.Notecard) -// remoteClient.SendAgentAlertMessage("Notecard saved", false); -// else if ((InventoryType)itemInfo.InvType == InventoryType.LSL) -// remoteClient.SendAgentAlertMessage("Script saved", false); -// else -// remoteClient.SendAgentAlertMessage("Item saved", false); -// } + // Only look for an uploaded updated asset if we are passed a transaction ID. This is only the + // case for updates uploded through UDP. Updates uploaded via a capability (e.g. a script update) + // will not pass in a transaction ID in the update message. + if (transactionID != UUID.Zero) + { + IAgentAssetTransactions agentTransactions = this.RequestModuleInterface(); + if (agentTransactions != null) + { + agentTransactions.HandleTaskItemUpdateFromTransaction( + remoteClient, part, transactionID, currentItem); + + if ((InventoryType)itemInfo.InvType == InventoryType.Notecard) + remoteClient.SendAgentAlertMessage("Notecard saved", false); + else if ((InventoryType)itemInfo.InvType == InventoryType.LSL) + remoteClient.SendAgentAlertMessage("Script saved", false); + else + remoteClient.SendAgentAlertMessage("Item saved", false); + } + } // Base ALWAYS has move currentItem.BasePermissions |= (uint)PermissionMask.Move; diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs index 6f99abd..c582cf6 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs @@ -49,7 +49,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests // log4net.Config.XmlConfigurator.Configure(); UUID userId = TestHelpers.ParseTail(0x1); - UUID itemId = TestHelpers.ParseTail(0x2); +// UUID itemId = TestHelpers.ParseTail(0x2); string itemName = "Test Script Item"; Scene scene = SceneHelpers.SetupScene(); diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs index d4c299f..ed9b179 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs @@ -174,7 +174,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests TestHelpers.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); +// UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); TestScene myScene1 = SceneHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000); TestScene myScene2 = SceneHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000); -- cgit v1.1