On at least Mono 3.2.8, multiple UDP sockets can bind to the same port by default. This means that
when running multiple connections, two can occasionally bind to the same port, leading to unexpected
errors as they intercept each others messages.
Prevent this by explicitly setting SocketOptionName.ReuseAddress = false
* 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
* 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
* 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
* 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
* 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