From b960a05e67b4aed543e37f4e041f0d5e5cc2d7c0 Mon Sep 17 00:00:00 2001 From: Melanie Date: Tue, 7 Dec 2010 01:07:13 +0100 Subject: Cowardly refuse to keep running when no application plugins are loaded. Prevents empty instances from hanging around when Mono.Addins messes up --- OpenSim/Region/Application/OpenSimBase.cs | 6 ++++++ .../Agent/AssetTransaction/AgentAssetsTransactions.cs | 6 ++++++ .../Agent/AssetTransaction/AssetXferUploader.cs | 18 +++++++++++++++--- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 6a7272d..941472b 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -222,6 +222,12 @@ namespace OpenSim m_moduleLoader = new ModuleLoader(m_config.Source); LoadPlugins(); + + if (m_plugins.Count == 0) // We failed to load any modules. Mono Addins glitch! + { + Environment.Exit(1); + } + foreach (IApplicationPlugin plugin in m_plugins) { plugin.PostInitialise(); diff --git a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs index 85e1c99..d7f3f2c 100644 --- a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs +++ b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs @@ -167,6 +167,9 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction { if (XferUploaders.ContainsKey(transactionID)) { + m_log.DebugFormat("[XFER]: Asked to update item {0} ({1})", + item.Name, item.ID); + // Here we need to get the old asset to extract the // texture UUIDs if it's a wearable. if (item.AssetType == (int)AssetType.Bodypart || @@ -191,6 +194,9 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction IInventoryService invService = m_Scene.InventoryService; invService.UpdateItem(item); + + m_log.DebugFormat("[XFER]: Updated item {0} ({1}) with asset {2}", + item.Name, item.ID, asset.FullID); } } } diff --git a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs index b8c8c85..a5dcdcc 100644 --- a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs +++ b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs @@ -40,7 +40,12 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction public class AssetXferUploader { // Viewer's notion of the default texture - private UUID defaultID = new UUID("5748decc-f629-461c-9a36-a35a221fe21f"); + private List defaultIDs = new List { + new UUID("5748decc-f629-461c-9a36-a35a221fe21f"), + new UUID("7ca39b4c-bd19-4699-aff7-f93fd03d3e7b"), + new UUID("6522e74d-1660-4e7f-b601-6f48c1659a77"), + new UUID("c228d1cf-4b5d-4ba8-84f4-899a0796aa97") + }; private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private AssetBase m_asset; @@ -244,6 +249,9 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction item.Flags = (uint) wearableType; item.CreationDate = Util.UnixTimeSinceEpoch(); + m_log.DebugFormat("[XFER]: Created item {0} with asset {1}", + item.ID, item.AssetID); + if (m_Scene.AddInventoryItem(item)) ourClient.SendInventoryItemCreateUpdate(item, callbackID); else @@ -280,7 +288,7 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction UUID tx = new UUID(parts[1]); int id = Convert.ToInt32(parts[0]); - if (tx == defaultID || tx == UUID.Zero || + if (defaultIDs.Contains(tx) || tx == UUID.Zero || (allowed.ContainsKey(id) && allowed[id] == tx)) { validated.Add(parts[0] + " " + tx.ToString()); @@ -293,7 +301,11 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction if ((perms & full) != full) { m_log.ErrorFormat("[ASSET UPLOADER]: REJECTED update with texture {0} from {1} because they do not own the texture", tx, ourClient.AgentId); - validated.Add(parts[0] + " " + defaultID.ToString()); + validated.Add(parts[0] + " " + UUID.Zero.ToString()); + } + else + { + validated.Add(line); } } textures--; -- cgit v1.1