Commit Graph

18 Commits

Author SHA1 Message Date
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
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
John Hurliman
dc22693b61 * Added more packets to the unused packets list
* Exposed UDPBase.udpPort

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3142 52acb1d6-8a22-11de-b505-999d5b087335
2009-10-13 21:29:25 +00:00
Jim Radford
066b5ae91b LIBOMV-501 Cleaning up some compile time warnings
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2843 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-03 20:42:44 +00:00
Jim Radford
b615d52b67 LIBOMV-573 Handles exception thrown due to mono platform not supporting SIO_UDP_CONNRESET flag
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2835 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-01 06:57:02 +00:00
John Hurliman
d48c7f4431 Attempted fix UDPBase (in server mode) becoming unresponsive when a client forcefully disconnects. The next packet the server sent would receive an ICMP destination unreachable response which causes the next call to BeginReceiveFrom() to throw an exception (see http://support.microsoft.com/kb/263823). This fix sets the SIO_UDP_CONNRESET flag to false as well as running a loop to try and recover the socket (in case the fix doesn't work on Mono)
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2828 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-28 21:05:26 +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
0c0e99af4a Removed all thread synchronization from UDPBase. Instead, try/catch blocks are used to handle shutdown
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2797 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-21 19:03:34 +00:00
John Hurliman
44547ead18 Recursive locking fix, should address [TC-67] and part of [LIBOMV-548]
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2793 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-21 16:37:13 +00:00
John Hurliman
5f20603374 * Small performance tweaks to packet classes
* Fixed a recursive locking problem when running UDPBase in server mode

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2788 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-20 19:21:30 +00:00
John Hurliman
14cb071e68 Switched back to async UDP sending, but still not wasting cycles firing PacketSent() callback. We should remove this callback entirely
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2779 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-18 22:27:08 +00:00
John Hurliman
8014afcc3e * Added ReaderWriterLockSlim.cs to OpenMetaverseTypes from the Mono SVN
* Prebuild will now define the VISUAL_STUDIO symbol in .csproj files while leaving NAnt files alone
* A conditional was added to use the .NET ReaderWriterLockSlim for VS compiles and the one in OpenMetaverseTypes for Mono compiles. This is a kludge until everyone is running Mono 2.6 or later (hah)

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2769 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-16 01:34:41 +00:00
John Hurliman
b3d686ef38 Upgraded UDPBase to use ReaderWriterLockSlim in non-recursive locking mode. This is mostly an experiment to see if the project will compile under Mono
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2765 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-16 00:23:37 +00:00
John Hurliman
bb97bdcdc7 Fixing [LIBOMV-485] by replacing the GetHashCode() check at login with a randomly generated LoginID value
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2690 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-06 17:41:48 +00:00
John Hurliman
99b3b74cd6 * More cleanup to acking and resending in libomv and Simian
* Fixed typo in Simian.ini that was disabling connection management
* Replaced several unnecessary foreach loops in Simian with dictionary lookups
* Simian now uses the last detected system IP address instead of the first

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2342 52acb1d6-8a22-11de-b505-999d5b087335
2008-11-10 18:00:05 +00:00
John Hurliman
175324af21 * Disabling the object pool while we debug various issues
* Fixing a race condition in PrimWorkshop
* Fixing a race condition in ParcelManager

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2154 52acb1d6-8a22-11de-b505-999d5b087335
2008-08-22 02:39:46 +00:00
John Hurliman
51aa7dbe10 * Removing unused InventoryNode and InventoryNodeDictionary files
* Adding INetworkManager interface, a good starting point for converting all of the manager classes to interfaces
* Changing object pooling for packet buffers from per-sim to a singleton in ObjectPool.cs, should resolve memory leaks for bots that travel the world [LIBOMV-338]
* Removing DetectBotCommand since that detection method does not work
* More work on Matrix4 type

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2034 52acb1d6-8a22-11de-b505-999d5b087335
2008-07-30 19:24:15 +00:00
John Hurliman
c1f3d6a3c2 Renaming libsecondlife folder to OpenMetaverse. Part of a multi-step process, do not check out this revision!
git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@1957 52acb1d6-8a22-11de-b505-999d5b087335
2008-07-22 22:56:05 +00:00