Commit Graph

70 Commits

Author SHA1 Message Date
Latif Khalifa
646b1b7770 Tell the sim that we know how to handle server side appearance
LL protocol change necessitated by the fix to
https://jira.secondlife.com/browse/SUN-74
2013-06-19 18:06:27 +02:00
Latif Khalifa
d1080a24d9 Added support for new fields in the RegionHandshake packet 2012-12-16 01:34:26 +01:00
Douglas R. Miles
59519523f1 fixed bug - Actually cache the prim 2012-06-05 14:41:19 -07:00
Douglas R. Miles
41af257459 Reset Pool Activity time 2012-06-05 14:37:09 -07:00
Douglas R. Miles
a043bafe4a Do not _add_ anything to *.MaxValue 2012-06-05 14:29:36 -07:00
Douglas R. Miles
00b363a4d3 Added two new boolean Client.Settings that can turn on Pooling: CACHE_PRIMITIVES and POOL_PARCEL_DATA .. set to their defaults they makes no change to libomv 2012-06-05 14:09:33 -07:00
Douglas R. Miles
b51e9d7315 SIMULATOR_TIMEOUT was designed for detecting simulators that are no longer in use (usually neighbors) .. So changed Connect() to use to LOGIN_TIMEOUT 2012-06-03 23:39:38 -07:00
Latif Khalifa
9cd91f59b8 LIBOMV-905: Region crossings and agent movement after teleport don't work on opensim
Don't send agent updates before AgentMovementComplete packet is received

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3541 52acb1d6-8a22-11de-b505-999d5b087335
2011-05-23 23:04:50 +00:00
Latif Khalifa
1808bdbe51 LIBOMV-888: Wait for UseCircuitCode ack before proceeding with connection to the sim
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3499 52acb1d6-8a22-11de-b505-999d5b087335
2011-04-15 12:53:08 +00:00
John Hurliman
7d028b3a84 * Renamed SimAccess.Min to SimAccess.Unknown to reflect that this is an invalid state for the enum
* Added missing RegionDenyIdentified and RegionDenyTransacted fields to ParcelPropertiesMessage

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3441 52acb1d6-8a22-11de-b505-999d5b087335
2010-08-23 23:10:43 +00:00
John Hurliman
dcfb27288a * Fix packet sending to only send ACKs for incoming packets marked as reliable, not every incoming packet
* Fixed a bug in ACK sending that was eating up CPU time
* Put the final UDP packets on the wire synchronously instead of asynchronously. Profiling showed this to be faster than .NET 2.0 style asynchronous sending (although possibly still slower than .NET 3.5 style asynchronous sending)
* Small tweak to LocklessQueue to try and keep LocklessQueue.Count as accurate as possible

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3417 52acb1d6-8a22-11de-b505-999d5b087335
2010-08-12 19:20:37 +00:00
Latif Khalifa
1cf8dee511 LIBOMV-857: Avoid sending AgentUpdate message before we send
RegionHandshakeReply during the connection sequence, it corrupts
agent position and causes other ill side-effects in Linden sim 1.40.4.

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3377 52acb1d6-8a22-11de-b505-999d5b087335
2010-07-22 07:35:01 +00:00
Latif Khalifa
81d75c6ecd LIBOMV-830: Adds a try/catch to DoubleDictionary.FindValue() (jurliman)
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3330 52acb1d6-8a22-11de-b505-999d5b087335
2010-05-06 23:31:01 +00:00
Latif Khalifa
287ca1bf88 LIBOMV-828: Flag for adult regions missing
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3313 52acb1d6-8a22-11de-b505-999d5b087335
2010-05-05 05:38:47 +00:00
John Hurliman
9138fee6b0 * Handle "-0" values in wearable assets
* Login fix for Linux clients now that the null ID0 is blacklisted
* Change Parcel from a struct to a class (this object is huge!) and remove the redundant initializers in the constructor
* Moved Terrain and WindSpeed data from TerrainManager to the Simulator class
* Don't track wind data either if STORE_LAND_PATCHES is disabled

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3298 52acb1d6-8a22-11de-b505-999d5b087335
2010-04-21 00:00:54 +00:00
John Hurliman
94f830b9d9 * Cleaned up the LocklessQueue implementation, removed the unsafe Clear() method, and added documentation
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3296 52acb1d6-8a22-11de-b505-999d5b087335
2010-04-01 01:07:50 +00:00
Latif Khalifa
1141de84d4 LIBOMV-810: Do some sanity checks instead of blindly running into exceptions. Patch by Elric Ember
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3274 52acb1d6-8a22-11de-b505-999d5b087335
2010-03-13 11:31:12 +00:00
Jim Radford
b9b648c8d0 LIBOMV-783 Adds support for Linden Homes regions, specifically a ParcelFlags entry which was recycled to indicate a linden homes parcel
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3245 52acb1d6-8a22-11de-b505-999d5b087335
2010-02-12 21:59:13 +00:00
Jim Radford
5cd3013890 LIBOMV-651 Corrects issue showing incorrect hex data on UDP packets after re-importing saved sessions
LIBOMV-650 Correctly displays capability messages after import
* Fixes saving and restoring sessions and filters in WinGridProxy
* Many Changes to WinGridProxy UI, AutoScroll is no longer an option, instead the Session ListView can be sorted by the # column to have this behavior, Hex/binary data can be saved to individual files for outside processing (tiny button on bottom toolbar of Hex tab when hex has data that can be exported)
* Filter save/restore options are now on the Filters tab since thats where they are most useful
* Adds support for decoding AgentGroupDataUpdate message which OpenSim sends as an "AvatarGroupsReply"
* Updates and additional documentation in AgentManager, Simulator and ObjectManager classes
* PacketDecoder class is now static
* Removed profanity in debugging Console write
* Updates to Decoders: Decode LayerData type, Show internal Animation constant for built in animations
* Moved Message decoder to PacketDecoder class
* Add some sanity checks in GridProxy to prevent throwing an exception when a GridProxy is restarted and a viewer wasn't informed.


git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3205 52acb1d6-8a22-11de-b505-999d5b087335
2009-11-03 05:32:49 +00:00
Jim Radford
95a87c7857 LIBOMV-686 Convert NetworkManager events/delegates to new patterns
* Remove INetworkManager interface (it was not being used for anything)

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3182 52acb1d6-8a22-11de-b505-999d5b087335
2009-10-28 08:01:52 +00:00
Jim Radford
bee710bd57 LIBOMV-720 Adds network utilization tracking, example TestClient command 'netstats' included to display the results.
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3152 52acb1d6-8a22-11de-b505-999d5b087335
2009-10-18 00:08:20 +00:00
Jim Radford
e09e3f45b3 LIBOMV-686 Implements new event patterns based on the Microsoft Framework Design Guidelines in ParcelManager
* Changes some public method names to match patterns used through library, namely requests that have an event are named with Request as a prefix
* Add Key2Name TestClient command for resolving group and avatar names based on a UUID
* BREAKING CHANGE * this is a major shift in the way events are internally handled.

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3151 52acb1d6-8a22-11de-b505-999d5b087335
2009-10-17 05:50:51 +00:00
John Hurliman
5bd0aae867 * Inventory.RootNode and Inventory.LibraryRootNode now return null instead of throwing an exception. Properties should not throw exceptions
* Fixed unintended overriding of LindenMessages.AssetUploaderBlock.State
* Changed the disposable pattern of Simulator to match what MS code analysis suggested
* Added using { } blocks to lots of stream opening to ensure the streams are always closed before going out of scope

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3080 52acb1d6-8a22-11de-b505-999d5b087335
2009-08-12 23:45:52 +00:00
Latif Khalifa
1faa60a75f LIBOMV-655: Print resend timout before zeroing it out
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3051 52acb1d6-8a22-11de-b505-999d5b087335
2009-08-02 23:49:58 +00:00
Jim Radford
0530b799b5 XML Documentation updates (No code changes)
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3008 52acb1d6-8a22-11de-b505-999d5b087335
2009-07-21 21:05:12 +00:00
Latif Khalifa
11bf653dd1 Catch all exceptions if we cannot change AckTimer, fixes nullref in LIBOMV-636
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3006 52acb1d6-8a22-11de-b505-999d5b087335
2009-07-19 22:45:09 +00:00
Latif Khalifa
de0e00a1f0 LIBOMV-636: Dereference timers so GC can collect GridClient and managers
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2998 52acb1d6-8a22-11de-b505-999d5b087335
2009-07-17 16:54:45 +00:00
John Hurliman
3d2ef50871 * Catch an ObjectDisposedException for the AckTimer
* Added item embedding support to createnotecard, which is currently not working. Any help getting this working would be appreciated

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2963 52acb1d6-8a22-11de-b505-999d5b087335
2009-07-10 17:31:57 +00:00
707b5378aa Removed EstateTools instance from Simulator, in accordance with LIBOMV-516. The only instance should be Client.Estate
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2930 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-28 16:09:01 +00:00
John Hurliman
eb0430f8dd Added a sanity check when restarting the Simulator.AckTimer to resolve [LIBOMV-604]. Thanks root66
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2920 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-27 22:18:41 +00:00
John Hurliman
f9be319211 * Fixed the possibility of simulator timer callbacks becoming stacked if Connect() was called while the timer callbacks were still running
* ACK timer is only restarted once it completes to prevent the callback from stacking

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2890 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-15 18:32:06 +00:00
John Hurliman
d0a9c6401f Resolving [LIBOMV-567]. libomv now throws a helpful error and a stack trace when a packet cannot be serialized because of null blocks
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2886 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-15 17:42:35 +00:00
Jim Radford
4dfc376536 LIBOMV-572 Increases ZeroCode buffer to 8192 bytes
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2842 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-03 20:07:43 +00:00
John Hurliman
084d2de86a * Added a required lock in the UDP ACK management (thanks lkalif)
* Added Cable Beach OpenSim attributes for wearable items

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2820 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-27 21:15:14 +00:00
John Hurliman
447d4db366 Allow appended ACKs to be attached to resent and/or unreliable packets
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2817 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-27 17:24:28 +00:00
John Hurliman
1ea4221f11 * Moved ACK handling to PacketReceived instead of after the incoming packet queue. This reduces average round trips (on the loopback connection) from ~200ms to ~15ms
* Added a more efficient collection for tracking already received packets

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2816 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-27 16:54:05 +00:00
John Hurliman
baaf1fb1f4 * Only append ACKs to outgoing packets if one or more ACKs are successfully dequeued
* Commented out noisy CAPS debugging messages
* Added a test (under packet tests for lack of a better place) to measure Environment.TickCount resolution and fail if the resolution is not consistently under a 10ms variance

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2813 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-27 00:29:43 +00:00
John Hurliman
2f0aea84b0 * Sanity check for invalid response data during login in libomv and GridClient
* Couple of tiny fixes here and there

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2806 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-25 19:33:20 +00:00
John Hurliman
3015a7a271 Minor cleanup
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2801 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-22 21:47:28 +00:00
John Hurliman
f1e8fd4fe8 Major rewrite of the packet sending code:
* Automatic packet splitting. You can send packets with any number of blocks and the networking layer will split them up automatically
* Less memory is allocated for outgoing packet buffers
* Memory is only allocated for zerocoding (outgoing and incoming) when it is needed
* A lockless queue is used to hold outgoing ACKs
* ACKs are stuffed into packets until they hit the MTU
* All outgoing packets are serialized exactly once, instead of serializing every resend
* Improved the clarity of the networking layer (I will upload a flow chart of packet sending soon)

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2800 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-22 19:54:00 +00:00
John Hurliman
c82459c323 * Removed the unnecessary overflow check when setting packet sequence number. Interlocked.Increment() handles wrapping for us
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2798 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-21 22:25:25 +00:00
John Hurliman
94f881085a Fixing pending ACK locking problems mentioned in [LIBOMV-551] and [LIBOMV-548]
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2796 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-21 17:44:39 +00:00
John Hurliman
032ce35729 Replacing networking stats tracking code with thread-safe calls
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2784 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-19 17:27:43 +00:00
Jim Radford
9ad17de8e3 LIBOMV-530 Updates Simulator object to include new variables included in 1.23 message template which are sent during the region handshake and include information on physical server location, the type of region (Homestead, OpenSpace, etc), CPU Class and CPU Ratio.
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2738 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-10 09:05:06 +00:00
John Hurliman
79beceeb1d * Rewrote the Header class as a struct and optimize for speed. This shouldn't be a breaking change for most apps, but GridProxy and WinGridProxy will need to be tested as thoroughly as possible. Important to note is that Packet.Header.AckList can be null now
* 404 checking in SeedRequestCompleteHandler
* A few new big endian conversion methods in Utils

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2709 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-08 06:38:28 +00:00
154d2ef319 [Simulator.cs]
* Changed simulator.AvatarPositions from Dictionary to InternalDictionary
* Resolves LIBOMV-450 by removing simulator.PositionIndexYou and .PositionIndexPrey in favor of Client.Self.AgentID and simulator.PreyID for indexing AvatarPositions
[InternalDictionary.cs]
* Added lock to .TryGetValue
* Added .FindAll overload for using a key as the predicate instead of value
[OpenMetaverse.GUI]
* Visual and functional enhancements to Minimap and AvatarList (takes advantage of new AvatarPositions code)
* Added failed login retry dialog to Dashboard
* Added more documentation to public classes

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2549 52acb1d6-8a22-11de-b505-999d5b087335
2009-03-27 18:29:32 +00:00
Latif Khalifa
b240c1442e Removed cruft from previois commit - LIBOMV-450
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2452 52acb1d6-8a22-11de-b505-999d5b087335
2009-02-22 10:48:00 +00:00
Latif Khalifa
d116087ecb LIBOMV-450: Breaking change. Change avatar locations from List<Vector3> to Dictionary<UUID, Vector3> to enable more uses of CoarseLocationUpdateCallback.
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2451 52acb1d6-8a22-11de-b505-999d5b087335
2009-02-22 10:45:03 +00:00
John Hurliman
39f154178b Implemented NetworkManager.OnPacketSent callback that is fired after every outgoing packet has been put on the wire. Adds the basic functionality requested in [LIBOMV-60]
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2444 52acb1d6-8a22-11de-b505-999d5b087335
2009-02-17 19:22:07 +00:00
John Hurliman
4b1f441574 * Sanity check in DeserializeLLSDXml() to return an empty LLSD block instead of throwing an exception
* Removing redundant code from OpenMetaverse.Utilities
* Using System.Diagnostics.StopWatch instead of Environment.TickCount for rate limiting, and speeding up packet sending from 75ms gaps to 10ms (might be slightly too fast, but it works for me)
* Cleaning up the logic a big in RequestAllSimParcels()
* Try/catch block in GridProxy around packet delegates

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2371 52acb1d6-8a22-11de-b505-999d5b087335
2008-12-05 01:34:24 +00:00