diff options
author | Diva Canto | 2013-07-09 14:12:52 -0700 |
---|---|---|
committer | Diva Canto | 2013-07-09 14:12:52 -0700 |
commit | 67e500383eb024fe4dd2681d0c5d902f289b65d8 (patch) | |
tree | f3523d8849fd573208869bf8e0aa8a77eb2c2077 | |
parent | BaseHttpServer: if the handler sets the content length, don't override it. Th... (diff) | |
download | opensim-SC_OLD-67e500383eb024fe4dd2681d0c5d902f289b65d8.zip opensim-SC_OLD-67e500383eb024fe4dd2681d0c5d902f289b65d8.tar.gz opensim-SC_OLD-67e500383eb024fe4dd2681d0c5d902f289b65d8.tar.bz2 opensim-SC_OLD-67e500383eb024fe4dd2681d0c5d902f289b65d8.tar.xz |
Put guards on a bunch of exception-inducing code, as seen in logs from load test.
6 files changed, 20 insertions, 6 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs index 630d1c3..759155a 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs | |||
@@ -171,11 +171,11 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
171 | if (!so.IsAttachment) | 171 | if (!so.IsAttachment) |
172 | return; | 172 | return; |
173 | 173 | ||
174 | if (so.Scene.UserManagementModule.IsLocalGridUser(so.AttachedAvatar)) | 174 | if (so.AttachedAvatar == UUID.Zero || Scene.UserManagementModule.IsLocalGridUser(so.AttachedAvatar)) |
175 | return; | 175 | return; |
176 | 176 | ||
177 | // foreign user | 177 | // foreign user |
178 | AgentCircuitData aCircuit = so.Scene.AuthenticateHandler.GetAgentCircuitData(so.AttachedAvatar); | 178 | AgentCircuitData aCircuit = Scene.AuthenticateHandler.GetAgentCircuitData(so.AttachedAvatar); |
179 | if (aCircuit != null && (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0) | 179 | if (aCircuit != null && (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0) |
180 | { | 180 | { |
181 | if (aCircuit.ServiceURLs != null && aCircuit.ServiceURLs.ContainsKey("AssetServerURI")) | 181 | if (aCircuit.ServiceURLs != null && aCircuit.ServiceURLs.ContainsKey("AssetServerURI")) |
@@ -183,7 +183,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
183 | string url = aCircuit.ServiceURLs["AssetServerURI"].ToString(); | 183 | string url = aCircuit.ServiceURLs["AssetServerURI"].ToString(); |
184 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Incoming attachement {0} for HG user {1} with asset server {2}", so.Name, so.AttachedAvatar, url); | 184 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Incoming attachement {0} for HG user {1} with asset server {2}", so.Name, so.AttachedAvatar, url); |
185 | Dictionary<UUID, AssetType> ids = new Dictionary<UUID, AssetType>(); | 185 | Dictionary<UUID, AssetType> ids = new Dictionary<UUID, AssetType>(); |
186 | HGUuidGatherer uuidGatherer = new HGUuidGatherer(so.Scene.AssetService, url); | 186 | HGUuidGatherer uuidGatherer = new HGUuidGatherer(Scene.AssetService, url); |
187 | uuidGatherer.GatherAssetUuids(so, ids); | 187 | uuidGatherer.GatherAssetUuids(so, ids); |
188 | 188 | ||
189 | foreach (KeyValuePair<UUID, AssetType> kvp in ids) | 189 | foreach (KeyValuePair<UUID, AssetType> kvp in ids) |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index 1eae0ac..e0c8ea6 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs | |||
@@ -135,7 +135,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
135 | if (sp is ScenePresence) | 135 | if (sp is ScenePresence) |
136 | { | 136 | { |
137 | AgentCircuitData aCircuit = ((ScenePresence)sp).Scene.AuthenticateHandler.GetAgentCircuitData(client.AgentId); | 137 | AgentCircuitData aCircuit = ((ScenePresence)sp).Scene.AuthenticateHandler.GetAgentCircuitData(client.AgentId); |
138 | if ((aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0) | 138 | if (aCircuit != null && (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0) |
139 | { | 139 | { |
140 | if (m_RestrictInventoryAccessAbroad) | 140 | if (m_RestrictInventoryAccessAbroad) |
141 | { | 141 | { |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/ActivityDetector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/ActivityDetector.cs index 221f815..e05d186 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/ActivityDetector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/ActivityDetector.cs | |||
@@ -81,6 +81,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.GridUser | |||
81 | 81 | ||
82 | public void OnConnectionClose(IClientAPI client) | 82 | public void OnConnectionClose(IClientAPI client) |
83 | { | 83 | { |
84 | if (client == null) | ||
85 | return; | ||
86 | if (client.SceneAgent == null) | ||
87 | return; | ||
88 | |||
84 | if (client.SceneAgent.IsChildAgent) | 89 | if (client.SceneAgent.IsChildAgent) |
85 | return; | 90 | return; |
86 | 91 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 355e0ee..54956ee 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -3687,7 +3687,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
3687 | "[SCENE]: Existing root scene presence detected for {0} {1} in {2} when connecting. Removing existing presence.", | 3687 | "[SCENE]: Existing root scene presence detected for {0} {1} in {2} when connecting. Removing existing presence.", |
3688 | sp.Name, sp.UUID, RegionInfo.RegionName); | 3688 | sp.Name, sp.UUID, RegionInfo.RegionName); |
3689 | 3689 | ||
3690 | sp.ControllingClient.Close(true); | 3690 | if (sp.ControllingClient != null) |
3691 | sp.ControllingClient.Close(true); | ||
3692 | |||
3691 | sp = null; | 3693 | sp = null; |
3692 | } | 3694 | } |
3693 | 3695 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs index dcb62f8..527ca35 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs | |||
@@ -67,6 +67,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
67 | { | 67 | { |
68 | int scriptsStarted = 0; | 68 | int scriptsStarted = 0; |
69 | 69 | ||
70 | if (m_scene == null) | ||
71 | { | ||
72 | m_log.DebugFormat("[PRIM INVENTORY]: m_scene is null. Unable to create script instances"); | ||
73 | return 0; | ||
74 | } | ||
75 | |||
70 | // Don't start scripts if they're turned off in the region! | 76 | // Don't start scripts if they're turned off in the region! |
71 | if (!m_scene.RegionInfo.RegionSettings.DisableScripts) | 77 | if (!m_scene.RegionInfo.RegionSettings.DisableScripts) |
72 | { | 78 | { |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 7dba7c8..3f223a3 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -553,7 +553,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
553 | /// </param> | 553 | /// </param> |
554 | public void StopScriptInstance(TaskInventoryItem item) | 554 | public void StopScriptInstance(TaskInventoryItem item) |
555 | { | 555 | { |
556 | m_part.ParentGroup.Scene.EventManager.TriggerStopScript(m_part.LocalId, item.ItemID); | 556 | if (m_part.ParentGroup.Scene != null) |
557 | m_part.ParentGroup.Scene.EventManager.TriggerStopScript(m_part.LocalId, item.ItemID); | ||
557 | 558 | ||
558 | // At the moment, even stopped scripts are counted as active, which is probably wrong. | 559 | // At the moment, even stopped scripts are counted as active, which is probably wrong. |
559 | // m_part.ParentGroup.AddActiveScriptCount(-1); | 560 | // m_part.ParentGroup.AddActiveScriptCount(-1); |