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