From 39e5785c0f5bfa9fce2549757ac895920c88825a Mon Sep 17 00:00:00 2001
From: Oren Hurvitz
Date: Thu, 31 Oct 2013 12:50:17 +0200
Subject: Fixed: Windlight functions caused an error if called when the
 script's owner isn't in the scene

---
 .../Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs  | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
index 1d6cb6d..30eed40 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
@@ -446,7 +446,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("LightShare functions are not enabled.");
                 return 0;
             }
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+
+            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
             {
                 LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
                 return 0;
@@ -474,7 +476,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("LightShare functions are not enabled.");
                 return;
             }
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+            
+            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
             {
                 LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
                 return;
@@ -497,7 +501,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("LightShare functions are not enabled.");
                 return 0;
             }
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+            
+            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
             {
                 LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
                 return 0;
-- 
cgit v1.1


From 14c72d4a5bba73c10bd4a5d93d53cd4fc0398570 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 17 Jan 2014 01:58:10 +0000
Subject: Revert "Fixed: Windlight functions caused an error if called when the
 script's owner isn't in the scene"

This reverts commit 39e5785c0f5bfa9fce2549757ac895920c88825a.

Did not mean to apply this yet.
---
 .../Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs  | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
index 30eed40..1d6cb6d 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
@@ -446,9 +446,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("LightShare functions are not enabled.");
                 return 0;
             }
-
-            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
             {
                 LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
                 return 0;
@@ -476,9 +474,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("LightShare functions are not enabled.");
                 return;
             }
-            
-            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
             {
                 LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
                 return;
@@ -501,9 +497,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("LightShare functions are not enabled.");
                 return 0;
             }
-            
-            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
             {
                 LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
                 return 0;
-- 
cgit v1.1


From 50ea2e0d67a9edee86d76b2fa8d4561710326461 Mon Sep 17 00:00:00 2001
From: Oren Hurvitz
Date: Thu, 31 Oct 2013 12:50:17 +0200
Subject: Fixed: Windlight functions caused an error if called when the
 script's owner isn't in the scene

---
 .../Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs  | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
index 1d6cb6d..30eed40 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
@@ -446,7 +446,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("LightShare functions are not enabled.");
                 return 0;
             }
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+
+            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
             {
                 LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
                 return 0;
@@ -474,7 +476,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("LightShare functions are not enabled.");
                 return;
             }
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+            
+            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
             {
                 LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
                 return;
@@ -497,7 +501,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("LightShare functions are not enabled.");
                 return 0;
             }
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+            
+            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
             {
                 LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
                 return 0;
-- 
cgit v1.1


From e9454d4672782647247db36e0d5e18b82cad58f0 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sat, 18 Jan 2014 01:36:40 +0000
Subject: Following on from 50ea2e0, only fetch scene presence for check if
 lightscript function has failed initial IsEstateManagerOrOwner() check

---
 .../Shared/Api/Implementation/LS_Api.cs            | 55 +++++++++++++++-------
 1 file changed, 38 insertions(+), 17 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
index 30eed40..b13a5ae 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
@@ -434,6 +434,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             }
             return wl;
         }
+
         /// <summary>
         /// Set the current Windlight scene
         /// </summary>
@@ -447,14 +448,20 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 return 0;
             }
 
-            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
             {
-                LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
-                return 0;
+                ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+
+                if (sp == null || sp.GodLevel < 200)
+                {
+                    LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
+                    return 0;
+                }
             }
+
             int success = 0;
             m_host.AddScriptLPS(1);
+
             if (LightShareModule.EnableWindlight)
             {
                 RegionLightShareData wl = getWindlightProfileFromRules(rules);
@@ -467,8 +474,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("Windlight module is disabled");
                 return 0;
             }
+
             return success;
         }
+
         public void lsClearWindlightScene()
         {
             if (!m_LSFunctionsEnabled)
@@ -476,19 +485,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("LightShare functions are not enabled.");
                 return;
             }
-            
-            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
             {
-                LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
-                return;
+                ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+
+                if (sp == null || sp.GodLevel < 200)
+                {
+                    LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
+                    return;
+                }
             }
 
             m_host.ParentGroup.Scene.RegionInfo.WindlightSettings.valid = false;
             if (m_host.ParentGroup.Scene.SimulationDataService != null)
                 m_host.ParentGroup.Scene.SimulationDataService.RemoveRegionWindlightSettings(m_host.ParentGroup.Scene.RegionInfo.RegionID);
+
             m_host.ParentGroup.Scene.EventManager.TriggerOnSaveNewWindlightProfile();
         }
+
         /// <summary>
         /// Set the current Windlight scene to a target avatar
         /// </summary>
@@ -501,15 +516,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("LightShare functions are not enabled.");
                 return 0;
             }
-            
-            ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
-            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+
+            if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
             {
-                LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
-                return 0;
+                ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+
+                if (sp == null || sp.GodLevel < 200)
+                {
+                    LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
+                    return 0;
+                }
             }
+
             int success = 0;
             m_host.AddScriptLPS(1);
+
             if (LightShareModule.EnableWindlight)
             { 
                 RegionLightShareData wl = getWindlightProfileFromRules(rules);
@@ -521,8 +542,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 LSShoutError("Windlight module is disabled");
                 return 0;
             }
+
             return success;
-        }
-        
+        }        
     }
-}
+}
\ No newline at end of file
-- 
cgit v1.1