* Added a base inventory connector that does common processing of inventory among all reference connector implementations. E.g. AddItem requires additional processing before being forwarded to service.
* Added if (m_Enabled) upon RemoveRegion
|Date: Wed, 5 Aug 2009 09:51:52 -0700
|Subject: [PATCH] Closed two major memory leaks for scripted objects
|
|Two major memory leaks for the scripted objects were fixed
|- One leak had to do with remoting acrossing app domains. When a script and
| its controlling agent communicate across an application boundary, it calls
| functions on a stub proxy object that then invokes the remote method on
| the object in the other app domain. These stub objects (two for each script)
| were setup to have infinate lifetimes and were never being garbage collected.
|- The second leak was the result of adding a scene object part instance method
| to a scene event and never removing it. This cause the event's delegate list
| to maintain a link to that object which is then never freed as the scene event
| object is never destroyed.
Patch applied, please direct feedback to me. Possible issue: Longtime idle
scripts like vendors may fail.
[1] Added a new OnAttach event to Scene/EventManager
[2] Hooked up existing attach event handler in XEngine.
[3] Modified SceneGraph and Scene.Inventory to trigger
attach events at the appropriate places. I was forced
to distribut the changes across two files because of
the way attach processing is distributed across the
two files.
[4] In the case of RezSingleAttachmentFromInventory it is
necessary to handle event scheduling in a special way.
There is no synchronous path available, so the fact
that this object is attached, and who it is attached to,
is cached when the ScriptInstance is created. When
the script is started, the attached handler is driven
after on_rez (but before changed, this should be reviewed).
Signed-off-by: dr scofield (aka dirk husemann) <drscofield@xyzzyxyzzy.net>
* Test for prim obstructions between the avatar and camera. If there are obstructions, inform the client to move the camera closer. This makes it so that walls and objects don't obstruct your view while you're moving around. Try walking inside a hollowed tori. You'll see how much easier it is now because your camera automatically moves closer so you can still see.
* Created a way to know if the user's camera is alt + cammed or just following the avatar.
* Changes IClientAPI interface by adding SendCameraConstraint(Vector4 CameraConstraint)
This involved adding a new OnUpdatePrimSingleRotationPosition event to IClientAPI so that we can get the changed position from the client.
Btw adding new events to IClientAPI is really tedious where you have to copy the change across to at least 5 or 6 other files.
[Note this doesn't fix the bug where any rotation changes to the root prim (but not the whole linkset) cause rotation errors on the child prims.]
* Remove the draconic locking around adding an avatar to the Scene
* Handle an extreme error case when border crossing fails and user uses map to teleport to a different region on the same instance causing control commands to go to a child agent.
* Make the Set Appearance method use the proper 'remove from physics scene' method.
* It *may* help border crossings.
* It *may* help the 'on avatar rez' lag, that people have been seeing the past week.
* It may also cause physics to crash more often on failed teleports (though.. I think I got the cases covered).
The patch included updates the root and child prims' AttchedAvatar
with the right UUID. It also cleans the AttachedAvatar properties
for the root and child prims on Drop and Detach
Attached is a patch that changes the oar file saving of creation date/time to an integer
instead of a string. I did this after justincc emailed me saying there is a problem
with internationalisation doing it the old way and I said I'd fix it. Its been
tested with MySQL and I've made the changes for MSSQL but that hasn't been well tested.
By extracting this code, it should make it easier to experiment with different ways of managing the update process. [Next step to make this module based, could be to create a SceneViewerFactoryModule]
I also fixed the issue where the code also loops through the m_forcesList and copies each force to the ScenePresence's movementVector. Which resulted in only the last force in the list actually be acted on. As each copy overrode the last one. So now it only copies the last force in the list.
out which client connection has closed. So, in multi-region sims, things
can get messy fast.
This introduces a second parameters, which is a Scene object ref. Minor
adjustments to custom modules may be required due to this change.
- Set OwnerID = GroupID for deeded objects.
- Close a security loophole that would have allowed a user with deed rights in a group to deed ANY object to that group, even if it's not owned by them and/or not set to that group
- Set LastOwnerID correctly. Handle objects vs. prims correctly.
Several improvements in the connectors themselves.
Several improvements in configurations.
Needed to add a hack in IUserService and UserManagerBase, to be removed when that service is refactored.
* For some reason, if a null was recieved (indicating a missing asset), the code had stopped passing that on to the waiting lock, resulting in a perpetual freeze
* This change passes the null on correctly
* Many thanks to thomax for being insistent in presenting his analysis of the problem :)
The attached patch implements llPassTouches. It has been added
to the export/import XML along with the flag for AllowedInventoryDrop.
The MySQL backend has been updated as well, though I haven't
done one of those before so could do with a check. I added
the migration mysql file as well.
The other data backends need updating as well.
The attached patch implements llPassTouches. It has been added
to the export/import XML along with the flag for AllowedInventoryDrop.
The MySQL backend has been updated as well, though I haven't
done one of those before so could do with a check. I added
the migration mysql file as well.
The other data backends need updating as well.
This may break a lot of things, but it needs to go in. It was tested in standalone and the UCI grid, but it needs a lot more testing.
Known problems:
* HG asset transfers are borked for now
* missing texture is missing
* 3 unit tests commented out for now
further ACL stuff:
- adding StrictAccessControl variable: DON'T set this to false if you
want to enforce ACL, it will disable ACLs right now. Default is
true.
once we've got code added to allow child agents but prevent them
from becoming root agents when the ACL denies access to the avatar,
setting this to false will then allow avatars to see into a
neighboring region but not enter it (currently ACL prevent both,
seeing and entering).
- enhancing log statements
- AssetType isn't InventoryType. Those enums contain different numbers. Use AssetType for the asset type, InventoryType for the inventory type.
- The ToString method (or ToLower) of AssetType/InventoryType doesn't necessarily return the correct LLSD string.
- Replaced several magic numbers by their corresponding enum.
- Fixed the invType for gestures and animations in the library.
This should fix Mantis #3610 and the non-terminating inventory loading
Scene.NewUserConnection()
- adding reason reporting
this enforces estate bans very early on and prevents us from
circulating client objects that we'd then have to retract once we
realize that the client is not allowed into the region
Move json stats to non-published resource name
Remove well-known resource name for json stats,
creating dynamic uris with private keys and add
a user configurable resource name for region owner usage.
Don't allow packets to be resent before they have actually been sent for the
first time. Switch from serializing a packet to get it's length to the LibOMV
provided Length property. Fix resend timing. Fix the use of dangling references
to Acked packets. Fix the packet handler to play nice with the packet pool.
Fix the packet pool. Add data block recycling to the packet pool. Packet pool
is now ENABLED by default. Add config option to disable packet and data block
reuse. Add ObjectUpdate and ImprovedTerseObjectUpdate to the packets being
recycled.