The original intention of the LSL permissions system was to make a script fail 
catastrophically. Subsequent edits have made it so that using a not allowed 
function would not crash and stop the script, which was the original, and back 
then intended, behavior.

The history of this is that it should be impossible for a script to detect that 
it is not running in SL, as an attempt to prevent the creation of multi-grid 
griefing scripts.

The threat of griefing never materialized as the SL griefers proved to be 
uninterested in OpenSim.

Still we're stuck with this legacy. However, as was said, there isn't an 
obvious "invalid return" for some of the functions and, worse, some don't 
return a value and expect the user to assume the call has succeded.

While I have been, at the start, an opponent of discoverability, I've since 
changed my mind and I believe a querying function for script permissions is the 
logical step to take. The internal code is already able to determine 
permissions from a string version if the osFunction name, exposing that would 
be quite trivial.

Also some "safe" functions that used to be subject to permission checks, aren't 
anymore.

So this gets a +1 from me.

The donated xmrEngine, which is now YEngine, also had, at the time it was 
donated, a try/catch mechanism. I am not aware of how much of that remains 
after the removal of the extension APIs and the linux-only parts that caused it 
to become YEngine. However, until it, or it's successor(s) become the standard 
engine and any engines not able to use try/catch are removed, the API can't 
really make use of it.

- Melanie




---- On Mon, 14 Oct 2019 19:42:56 +0000 Haravikk <mailto:open...@haravikk.me> 
wrote ----




> On 14 Oct 2019, at 15:12, dz <mailto:d...@bitzend.net> wrote:
> 
>  just an observation from a casual observer  with decades of  software
> design experience...
> 
> Wouldn't it be  more productive to wrap all OSSL function calls in  error
> handling so the response is "correct" regardless of the  permissions?
> Adding  another seperate function that will   ALWAYS need to be called
> before any OSSL function just adds  bloat, confusion,   and  removes any
> incentive for the problem to be handled  "correctly"
> (looks at the  forum  name)   OOO  ya    nvm…

The problem with that is that a default return value may not be distinguishable 
as an error; for example, for a function that returns a list, an empty list 
might make sense, but you wouldn't be able to tell if the return was genuinely 
empty, or the call wasn't allowed.

In an ideal world we'd use C# or another language with exception handling, as 
that's a much cleaner way to handle capturing of recoverable errors. Of course 
it's also a lot of work.

I wonder though, how difficult would it be to expose a minimal version of 
exception handling to LSL? i.e- a very basic try/catch block (no multiple catch 
blocks, or catches of specific types, just catch everything)?

> On Sun, Oct 13, 2019 at 10:27 AM Mike Higgins <mailto:m...@kayaker.net> wrote:
> 
>> Yeah, there is an example of that crash and recover trick at
>> http://opensimulator.org/wiki/Threat_level, at the bottom of the page.
>> 
>> I have done that and it works after SPAMMING EVERY AVATAR IN THE REGION
>> once. Which is still annoying.
>> 
>> On 10/13/2019 4:25 AM, Michel Beauregard wrote:
>>> Its a good idea to have a function that test if a osl function is
>> available to a owner in a specific location.
>>> 
>>> For now there is a way to test for osl function scriptwise. A failing
>> osl function cause a crash of the event calling it.  So what I do is on
>> state_entry I call a timer with a fake call to all the OSL function(s) to
>> be use in my scripts . If the timer failes it means that one or any of the
>> function I need is not allowed . And the script simply spell out to the
>> owner of that object that it cant be use and abort.  So at least it does
>> not repeatedly spam the region .
>>> 
>>> I will post an example of the script I use in my user page in opensim if
>> you like more detail.  (http://opensimulator.org/wiki/User:Gimisa) . With
>> your function you might be able to detect the failure of the osl function
>> call  instead of sending it to report inworld and act by sending back a
>> message to the script for action. Allowing me to use the reply in any way I
>> need instead of using timer failure.
>>> 
>>> hope it helps
>>> GiMiSa
>>> _______________________________________________
>>> Opensim-dev mailing list
>>> mailto:Opensim-dev@opensimulator.org
>>> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
>> _______________________________________________
>> Opensim-dev mailing list
>> mailto:Opensim-dev@opensimulator.org
>> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
>> 
> _______________________________________________
> Opensim-dev mailing list
> mailto:Opensim-dev@opensimulator.org
> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev

_______________________________________________
Opensim-dev mailing list
mailto:Opensim-dev@opensimulator.org
http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
Opensim-dev@opensimulator.org
http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev

Reply via email to