Copying doesn't prevent IOExceptions on Windows due to file locking. (e.g. Mantis 5642, 5630).
So instead go back to moving the file, swallowing IOExceptions that occur just for the move due to competing caching threads or even different opensimulator instances.
This hopefully addresses http://opensimulator.org/mantis/view.php?id=5634
This is the most probable cause of the memory problems that people have been seeing in the past month.
This bug has been around since commit 5dc785b (4th July 2011). Doh! This is why regressions tests are such a good idea... :)
Many thanks to Nebadon for using git bisect to track down this bug, which made it a 5 minute fix.
This works by serializing and deserializing NPC AvatarAppearance to a notecard in the prim inventory and making the required baked textures permanent.
By using notecards, we avoid lots of awkward, technical and user-unfriendly issues concerning retaining asset references and creating a new asset type.
Notecards also allow different appearances to be swapped and manipulated easily.
This also allows stored NPC appearances to work transparently with OARs/IARs since the UUID scan will pick up and store the necessary references from the notecard text.
This works in my basic test but is not at all ready for user use or bug reporting yet.
Avatar moves and stops. However, will stop in mid stride.
And if the move to position is in the air, avatar will continue to make vain and quite hilarious attempts to take off (but never doing so).
Clearly more work is needed.
Had to stop using AvatarService for now since it doesn't store baked texture IDs (which is why this was failing).
Also failing because cloning appearance was also cloning the AvatarApperance.Owner field, which we weren't then changing.
Extended TestCreate() to check this.
This is to accomodate situations where the authorization service is being used by the hypergrid, where visitors have no user account.
See http://opensimulator.org/mantis/view.php?id=5517, this code is somewhat adapted/cleaned up from Michelle's patch
I'm a little ambivalent about this since visitors could put anything in firstname/lastname so it's not much of an auth measure.
It's up to the auth service to decide which data it actually uses.
Possibly we should be passing through other info such as agent circuit ip
Users should not be given the impression that they can modify these items.
This still does not solve the issue where library items cannot be dragged into prims or user inventory any time after they are initially seen.
Curiously, manually copying and pasting still appears to work.
On the surface, this seems to have something to do with library item caching on the client, since deleting the cache allows drag to work again once
Not sure what the exact problem is.
Some items had completely wrong permissions - this is easier than correcting them all.
The ability to set permissions in xml is retained since there are use cases for this (e.g. to create no-mod library scripts)
Library items always need the same permissions, so it doesn't make sense to load them from the xml files. This just opens the door to permissions mistakes.