Commit Graph

334 Commits

Author SHA1 Message Date
Dan Lake
08d8a3e580 Requeue unacknowledged entity updates rather than resend then "as is".
Often, by the time the UDPServer realizes that an entity update packet
has not been acknowledged, there is a newer update for the same entity
already queued up or there is a higher priority update that should be
sent first. This patch eliminates 1:1 packet resends for unacked entity
update packets. Insteawd, unacked update packets are decomposed into the
original entity updates and those updates are placed back into the
priority queues based on their new priority but the original update
timestamp. This will generally place them at the head of the line to be
put back on the wire as a new outgoing packet but prevents the resend
queue from filling up with multiple stale updates for the same entity.
This new approach takes advantage of the UDP nature of the Linden protocol
in that the intent of a reliable update packet is that if it goes
unacknowledge, SOMETHING has to happen to get the update to the client.
We are simply making sure that we are resending current object state
rather than stale object state.

Additionally, this patch includes a generalized callback mechanism so
that any caller can specify their own method to call when a packet
expires without being acknowledged. We use this mechanism to requeue
update packets and otherwise use the UDPServer default method of just
putting expired packets in the resend queue.
2011-04-19 08:10:01 -07:00
Mic Bowman
78c04d61ca Fixed the update of items in the priority queue to enable both
types of property updates to be specified. Not sure if one form
of property update should supercede another. But for now the old
OpenSim behavior is preserved by sending both.
2011-04-12 15:58:57 -07:00
Mic Bowman
69d014e1dc First pass at moving object property requests into a queue similar
to the entity update queue. The number of property packets can
become significant when selecting/deselecting large numbers of
objects.

This is experimental code.
2011-04-12 15:58:57 -07:00
Justin Clark-Casey (justincc)
6ae04448f7 Start using IPrimCounts populated by PrimCountModule instead of LandData counts populated by LandManagementModule.
In order to pass ILandObject into IClientAPI.SendLandProperties(), had to push ILandObject and IPrimCounts into OpenSim.Framework from OpenSim.Region.Framework.Interfaces, in order to avoid ci
Counts are showing odd behaviour at the moment, this will be addressed shortly.
2011-03-25 23:05:51 +00:00
Melanie
a32f80b9e3 Implement SendPlacesReply 2010-12-30 01:36:09 +00:00
Teravus Ovares (Dan Olivares)
46db73b62b * Re-Adding Scene TimeDilation to Object Update Packets.
* Added Calculating Time Dilation in the OdePlubin
* When multiple object updates are stuffed into one packet, average the time dilation between them as a compromise.
* Time Dilation on the update is calculated when the EntityUpdate object is created.  The pre-calc-ed TD is stored in the Entity update and used when it goes out on the wire.  Previously, it was 1.0 all the time. The time dilation is tied to when the update is created, not when the update is sent.
2010-12-23 03:30:09 -05:00
Teravus Ovares (Dan Olivares)
25ecd62b1f * Adds AbortXfer to the ClientAPI mix
* Adds an item that checks to see if the top request has been there for longer then 30 seconds without an update and sends an AbortXfer if it encounters one.   This allows the client to cancel the Xfer on it's side so you can re-select the prim and get the inventory when it fails the first time.
* Some interesting locking...    Using NewFiles to lock the rest of them.   We'll see how that goes.
* The goal of this is to ensure that Xfers are restartable when they fail.  The client will not do that on it's own.
2010-12-21 19:15:44 -05:00
Melanie
9bd7f3b03a Revamp the viewer -> banlist packet processing so fix a number of bugs.
Remove the too coarse CanEditParcel method in favor of a CanEditParcelProperties
method that takes a GroupPowers argument to specify what action is to be
taken. Also, make the method to set parcel data much more granular. Permissions
in a deeded setting should now work.
2010-12-13 20:35:56 +00:00
Master ScienceSim
b1c8d05888 Major refactoring of appearance handling.
AvatarService -- add two new methods, GetAppearance and SetAppearance
to get around the lossy encoding in AvatarData. Preseve the old
functions to avoid changing the behavior for ROBUST services.

AvatarAppearance -- major refactor, moved the various encoding
methods used by AgentCircuitData, ClientAgentUpdate and
ScenePresence into one location. Changed initialization.

AvatarAttachments -- added a class specifically to handle
attachments in preparation for additional functionality
that will be needed for viewer 2.

AvatarFactory -- removed a number of unused or methods duplicated
in other locations. Moved in all appearance event handling from
ScenePresence. Required a change to IClientAPI that propogated
throughout all the IClientAPI implementations.
2010-10-20 16:17:54 -07:00
Diva Canto
a8b80ef800 Added SendTeleportProgress to IClientAPI. Ya know what that means... 8 files affected. 2010-08-16 11:39:46 -07:00
Diva Canto
77de28965a Work on TeleportStart: renamed method from TeleportLocationStart to TeleportStart, and now sending this upon all teleports, not just some, and in the right place (EntityTransferModule). 2010-08-16 11:33:59 -07:00
Melanie
e1ea82b329 Major attachments cleanup. Remove unused AttachObject ClientView method
Clean up use of AttachObject throughout, reduce number of overloads
and number of parameters
2010-07-14 19:51:12 +01:00
Melanie Thielker
a7b5fe6a88 Remove useless quaternion parameter from AttachObject sig 2010-07-14 19:49:54 +01:00
Melanie
c8ed972443 Move "StopFlying()" into LLSpace. Try to reinstate the carefully crafted packet
we used to send before slimupdates and explicitly send it
2010-06-12 01:25:25 +01:00
Mikko Pallari
4e45718833 Added overload of SendGenericMessage to LLClientView with string list as parameter. Now modules themselfs don't necessarily need to convert strings to byte arrays. Added this as it was removed in LightShare patch. 2010-05-21 23:08:07 +01:00
John Hurliman
93ef65c690 * Moving all of the prioritization/reprioritization code into a new file Prioritizer.cs
* Simplified the interest management code to make it easier to add new policies. Prioritization and reprioritization share code paths now
* Improved the distance and front back policies to always give your avatar the highest priority
2010-05-21 13:55:36 -07:00
unknown
bf5c81d77e * Initial commit of the slimupdates2 rewrite. This pass maintains the original behavior of avatar update sending and has a simplified set of IClientAPI methods for sending avatar/prim updates 2010-05-12 15:59:48 -07:00
Melanie
22b3217113 Fix link security issue 2010-04-30 11:46:50 +01:00
dahlia
3d0860ae61 thanks lkalif for Mantis #4676 - a patch that adds support for inventory links
Signed-off-by: dahlia <dahliaTrimble@gmail.removeme.com>
2010-04-12 17:10:51 -07:00
Melanie
ec637e2b8c Committing the LightShare code, which was developed by TomMeta of Meta7.
This allows scripts to set WindLight parameters for clients connecting
to a region. Currently, this is only supported by the Meta7 viewer.
2010-03-31 04:20:20 +01:00
unknown
98f91a252c - parcel blocking, region crossing blocking, teleport blocking
Signed-off-by: Melanie <melanie@t-data.com>
2010-03-09 22:43:55 +00:00
unknown
2dcf73dd93 - supporting llTextBox
Signed-off-by: Melanie <melanie@t-data.com>
2010-03-06 20:05:11 +00:00
Melanie
86c621fdc7 Change the signature of SendChangeUserRights, because we have to send
this to both parties
2010-02-28 22:56:31 +00:00
Melanie
44e7224b86 Add missing ChangeUserRights packet sender 2010-02-28 22:47:31 +00:00
Diva Canto
5c5966545d Initial Online friends notification seems to be working reliably now. All this needs more testing, but everything is there. 2010-02-28 12:07:38 -08:00
Melanie
c033223c63 Merge branch 'master' into presence-refactor 2010-02-15 00:20:48 +00:00
Revolution
9821c4f566 Revolution is on the roll again! :)
Fixes: Undo, T-pose of others on login, modifiedBulletX works again, feet now stand on the ground instead of in the ground, adds checks to CombatModule. Adds: Redo, Land Undo, checks to agentUpdate (so one can not fall off of a region), more vehicle parts. Finishes almost all of LSL (1 function left, 2 events).

Direct flames and kudos to Revolution, please

Signed-off-by: Melanie <melanie@t-data.com>
2010-02-14 22:18:46 +00:00
Diva Canto
5001f61c08 * HGGridConnector is no longer necessary.
* Handle logout properly. This needed an addition to IClientAPI, because of how the logout packet is currently being handled -- the agent is being removed from the scene before the different event handlers are executed, which is broken.
2010-01-29 18:59:41 -08:00
Teravus Ovares (Dan Olivares)
ccf7bfe09b * a few more endlines.. 2010-01-26 12:44:42 -05:00
Melanie
063f106cbb Add functionality to estate "Allowed Users" and "Allowed Groups". Allowed users
will be honored now, while allowed groups will not. This requires additional
groups module integration work
2010-01-09 14:17:44 +00:00
Revolution
c76c80a28a Adds IClientAPI voids for GroupProposals.
Signed-off-by: Melanie <melanie@t-data.com>
2010-01-08 18:27:49 +00:00
Revolution
b67470af91 Fixes the newly added packets as per Melanie's request.
Provisionally applied to fix the naming. Signatures are still subject to change.

Signed-off-by: Melanie <melanie@t-data.com>
2010-01-07 15:09:13 +00:00
Jeff Ames
70d5b1c34c Formatting cleanup. Add copyright headers. 2010-01-04 06:17:30 +09:00
Melanie
004c751a1b Whitespace cleanup (changed hard tabs to 4 spaces) 2009-12-31 21:36:04 +00:00
Revolution
234d4e1105 Adds tons of packets.
Applied with change: Changed spelling to Summary (from Summery)

Signed-off-by: Melanie <melanie@t-data.com>
2009-12-31 21:24:56 +00:00
Melanie
88b3b98811 Add AvatarInterestsReply 2009-12-26 04:12:51 +00:00
John Hurliman
5145dfa53c * Removing the redundant SendPrimitiveTerseData.State field, it duplicates AttachPoint
* LLClientView.CreateImprovedTerseBlock() now uses AttachPoint and does the proper high-low swap (this should fix disappearing attachment pieces)
2009-11-09 17:13:56 -08:00
Melanie
83b4b4440b Patch by revolution, thank you. Mantis #1789 . Implement friends permissions.
Applied with major changes. Core functionality commented pending review
for possible rights escalation. No user functionality yet.
2009-11-05 02:09:07 +00:00
Melanie
c72f78215b Backport the fixes to WebFetchInventoryDescendents to the UDP
InventoryDescendents packet. Testing has shown that UDP inventory now
works flawlessly and, unlike CAPS inventory, doesn't download the entire
agent inventory on start. Neither does it incessantly re-request folder
NULL_KEY. Therefore, I have disabled CAPS inventory.
2009-11-04 01:56:19 +00:00
John Hurliman
233e16b99c * Rewrote the methods that build ObjectUpdate and ImprovedTerseObjectUpdate packets to fill in the data more accurately and avoid allocating memory that is immediately thrown away
* Changed the Send*Data structs in IClientAPI to use public readonly members instead of private members and getters
* Made Parallel.ProcessorCount public
* Started switching over packet building methods in LLClientView to use Util.StringToBytes[256/1024]() instead of Utils.StringToBytes()
* More cleanup of the ScenePresences vs. ClientManager nightmare
* ScenePresence.HandleAgentUpdate() will now time out and drop incoming AgentUpdate packets after three seconds. This fixes a deadlock on m_AgentUpdates that was blocking up the LLUDP server
2009-10-18 20:24:20 -07:00
John Hurliman
b4526a5a6d * Big performance increase in loading prims from the region database with MySQL
* Handle the AgentFOV packet
* Bypass queuing and throttles for ping checks to make ping times more closely match network latency
* Only track reliable bytes in LLUDPCLient.BytesSinceLastACK
2009-10-18 02:00:42 -07:00
John Hurliman
fdb2a75ad3 Committing the second part of Jim Greensky @ Intel Lab's patch, re-prioritizing updates 2009-10-17 18:01:22 -07:00
Melanie
cdcbd22ba8 Merge branch 'master' into prioritization 2009-10-17 14:51:17 +01:00
Melanie
c7da13eb23 Adds SendAvatarInterestsUpdate to IClientAPI
Thank you, Fly-Man
2009-10-17 14:50:21 +01:00
John Hurliman
4b75353cbf Object update prioritization by Jim Greensky of Intel Labs, part one. This implements a simple distance prioritizer based on initial agent positions. Re-prioritizing and more advanced priority algorithms will follow soon 2009-10-15 16:35:27 -07:00
John Hurliman
395a8680c3 * Fixed a bug where clients were being added to ClientManager twice
* Changed the ClientManager interface to reduce potential errors with duplicate or mismatched keys
* Added IClientAPI.RemoteEndPoint, which can (hopefully) eventually replace IClientAPI.CircuitCode
* Changed the order of operations during client shutdown
2009-10-13 16:53:19 -07:00
John Hurliman
23a334b9f5 * Rewrote ClientManager to remove Lindenisms from OpenSim core, improve performance by removing locks, and replace LLUDPClientCollection
* Removed the confusing (and LL-specific) shutdowncircuit parameter from IClientAPI.Close()
* Updated the LLUDP code to only use ClientManager instead of trying to synchronize ClientManager and m_clients
* Remove clients asynchronously since it is a very slow operation (including a 2000ms sleep)
2009-10-13 14:50:03 -07:00
Melanie
31d8cec0f8 Merge branch 'master' into diva-textures 2009-10-02 08:23:38 +01:00
James J Greensky
44776fea72 Fixing LLClientView memory leak
Fixing LLClientView memory leak by disposing of all timers utilized
in LLClientView as they contain references to the callback method.
This required the use of the Terminate and Close infrastructure that
was already in place but was not being utilized.
2009-10-01 04:11:32 +01:00
John Hurliman
5dfd2643df * Change the signature of the agent set appearance callback to prevent unnecessary serialization/deserialization of TextureEntry objects and allow TextureEntry to be inspected for missing bakes
* Inspect incoming TextureEntry updates for bakes that do not exist on the simulator and request the missing textures
* Properly handle appearance updates that do not have a TextureEntry set
2009-09-30 15:53:03 -07:00