Open Tampa opened 3 years ago
This was in place so that it would work with old versions of OpenSim by undefining NEWHTTPFLOW. That's not as important these days as it seems that many grids are upgrading more frequently now. Still, I wonder why this was failing. I'll look at pulling this in along with a land fix as I figure that out and build a new dll.
Given the changes to OpenSim in the time since 8.x also addressed a few security issues, the kind that potentially could even impact Gloebit, it would probably make sense to only support a security critical module like this on a platform that has received and continues to receive security updates. Support for the current release, the previous and master code is probably more than enough to cover the vast majority of grids even large enough to handle any significant commerce.
There is still the matter of transactions being slow, so slow in fact that they can cause blocking behavior when a simulator shutdown is called. Unfortunately even once the pending transactions complete the simulator remains stuck in that state and has to be forcefully closed. Whether it makes sense to account for this I don't yet know and given upgrades on the backend improving the transaction speed the likelihood to encounter this specific issue should be largely gone. That said it makes sense to continue development into the direction of stability with the emphasis on preventing errors or other bad handling in the module from causing a termination of the main simulator process. This mostly stems from the relation to the underlying OpenSim code, which when called with bad data will not handle this gracefully. It's up to the module to maintain a level of self-control to make sure bad data cannot be passed on, but obviously this means reworking some parts to add the necessary checks. This should be the focus going forward along with working on the overall UX.
I will look into some parts to see if I can help with this, but I don't know the backend so I cannot predict what conditions and data would cause bad handoffs so I can only really do some basic stuff, not that I really have the time anyways.
This now includes the fixes to version checking which should resolve some of the issue folks have with preflight not catching. Not sure why this was in post init to begin with, but should check for which flow to use before we register regions.
Not the prettiest way of doing it, but I did add some handling for bad database connections. It disables if any of the inits fail. This should make it possible for the module to handle a bad database connection at least on startup. During runtime that still causes a crash. Ideally this would be handled a bit more gracefully in general disabling the module after repeated failed attempts rather than completely crashing the simulator, which is not something modules should ever do, especially not optional ones!
Also should handle connection problems going forward as well as missing certs.
It appears this no longer works as intended and causes issues with current OpenSim master. Removed the ifs there and it should rely squarely on version checking now. Tested and working with master.