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<UUID> defaultIDs = new List<UUID> {
+                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