* Please note that this implementation has not been mathematically verified to be correct-as-described, it is probable that this implementation may produce differing results to Linden Lab. Testing (and test data) would be appreciated.
duplicate delivery of state_entry if a region is restarted just after
saving the script. Changes script state saves to no longer abort long-
running event handlers. Queues the save instead. Adds shutdown handler
to save script state on irderly shutdown
* This may possibly (est. 20% change) help the situation that we see on OSGrid meetings when a region stops accepting logins, which appears to be because it never receives the expect_user request
* Now it should properly inform the user and stop a login if a region server could not be contacted in order to expect a user (the last commit didn't actually quite work correctly)
* also, properly tell the user if no region can be contacted, rather than letting the login proceed only to fail later when authentication fails on the region side
* copying and pasting code... it makes me cry inside... so sad...
* These are different types then the OMV types because changing them causes just about all grid comms to break. If these were the libOMV types, then libOMV couldn't change them ever again after that.. or we'd have a breakage whenever they changed them.
* This might introduce a map issue. Still checking it out.
* Testers, please try rezzing your inventory on this revision and sending me feedback in mantis.
* Users, it's not time to update yet. The dust still hasn't settled.
* This is a HUGE OMG update and will definitely have unknown side effects.. so this is really only for the strong hearted at this point. Regular people should let the dust settle.
* This has been tested to work with most basic functions. However.. make sure you back up 'everything' before using this. It's that big!
* Essentially we're back at square 1 in the testing phase.. so lets identify things that broke.
Thank you, openlifegrid, for a patch to move new user connections to
thread pool threads.
Reworked by me to fit current trunk.
I believe that that patch may be beneficial in reducing the cases
in which regions become unresponsive and will no longer accept
new logins.
The attached patch (against r6075) fixes it for grid-mode. If the
home-region isn't available, the stored regionHandle will be used
to compute the region-coordinates of the home. This will be wrong
if the home-region has moved, of course, but without the region
being online we can't request the RegionInfo of it for finding out.
Doing that (before the patch) and accessing the (null) RegionInfo
led to a NullReferenceException, which prevented logging in to the
last location.
Types extracted from a LSL_Types.list have to be down-cast initially
to the exact type of value type object that the Object actually is.
This would make for very cumbersome, ugly code when extracting list
parameter items in ll functions where a few implicit conversions
should be applied such as key -> LSLString and LSLInteger -> LSLFloat
(but not LSLFloat -> LSLInteger). This patch adds a set of GetXXXItem
member functions to the LLS_Type.list class, where XXX is the name
of the LSL_Type to be extracted: LSLFLoat, LSLInteger etc. All take
a single, int parameter that is the item number to be extracted.
If the parcel pointed to by the landmark has nothing in the
Description field (of the General tab in About Land...), a
NullReferenceException is thrown and the client is logged out.
I added a check to the calls to Helpers.StringToField() in OpenSim.Region.ClientStack.LindenUDP.SendParcelInfo to avoid
this issue.