Spelling fix.
Re-use the buffer in Connection Listener, and add ReleaseBuffer() method in ClientPacket to explicitly release references to the shared buffer.
This retains the optional ability to retain ClientPacket and it's underlying data for longer (server development, or 3rd party tool)
* Fartwhifs "Removing unused pattern from CryptoSystem for slightly better performance." PR
* PacketHeader Improved Efficiency
* Improve ClientPacket.ParsePacketData() efficiency
* Packet.Data does not need to be disposed()
See here: ac99a1b716/src/Common/src/CoreLib/System/IO/MemoryStream.cs (L124)
Disposing simply sets _isOpen, _writable, _expandable to false. It doesn't even release the reference to the buffer passed in to the ctor.
* WIP
* revert the RangeAdvance stuff
* More improvements
* More improvements
* More naming improvements
* fixed bug causing disconnects due to NAK requests being dropped.
added asynchronous verification of encrypted CRCs
added checksum caching to ClientPacket
removed "generational ISAAC" debugging tools
fixed a bug causing session to enter an unspecified state when the connect request packet sent to the client was corrupted in transit
added handling of trusted packet with ClientSentNetErrorDisconnect flag
fixed bug during handshake causing defunct session to linger
fixed AccountSelectCallback was being called in both the try and catch sections of a try/catch block leading to crashes whenever a bad handshake occurs
implemented parsing of optional "flow" header data
added more network logging
* added packetLog to WorldManager
removed pre-processor definition NETDIAG and directives
* Remove RunActions() from IActor interface
* make Landblock an IActor
* Make WorldManager an IActor
* Remove AgressiveInlinding from ActionQueue.RunActions (Helps break up profiling results)
* Fix WorldManager EnqueueAction
* Split WorldObject ActionQueues into Landblock and Player
* Switch Landblock from o(n) to o(1)
* Loop in reverse order, no need to create a new list using FindAll.
* use an ArrayPool<byte> to conserve resources and improve performance
* cosmetic
* Update/Tick Age every 7 seconds for Players (Before, this was consuming 1% CPU)
* More packet transmission improvements
Because of this bug, ACE has been sending packets with no size limit. While this works well on a local network, it could have had reliablity issues over a WAN.
ServerPacket has a MaxPacketSize of 464. This stems from the original days of ACE.
I suspect this is the maximum size of AC related data we can stuff into a UDP packet (before overhead is added) to keep the UDP packet sent over the WAN in a single fragment.
If we increase this value, it could reduce some server load and byte overhead, but, if a single fragment of the UDP is lost, all fragments will be lost and have to be resent.
* adding @netstats admin command
* trying to figure out the issue
* fixing bug causing AcknowledgeSequence packets to increment the lastReceivedFragmentSequence variable, causing the Sequence to break and never recover for that session
fixing bug causing RequestTransmit packets to be ignored
fixing bug causing the server to crash when a C2S packet is corrupt or malformed
changing the C2S RequestForTransmit packet count to be per request packet instead of per requested sequence
adding Developer commands junk, junk_s2c, junk_c2s, trash_s2c, and trash_c2s to simulate bad connections and manually corrupt packets
* updating changelog.md
* Update changelog.md
fixed incorrect variable name referred to in change log
* Update changelog.md
fix formatting
* adding preprocessor definition NETDIAG and directives to ACE.Common and ACE.Server to help development by preserving troubleshooting tools without interference with the optimal solution
* Apply suggestions from code review
set accessor only needed for NETDIAG functionality
minor change log addition
* reverting some unnecessary source syntax and formatting changes.
removing an unused exception variable
* reverting some unnecessary source syntax and formatting changes
* minor optimization of a duplicate prevention check
* Issue 453
Added boolean to ClientPacket if packet fails to parse.
Use Packet.IsValid to determine whether to readfragments
Use Packet.IsValid to determine whether to send Packet to WorldManager
Added new list for tracking endpoints calling server before creating sessions
Added check if client is already in the loggedIn list and sending another Login packet to remove
Added check if client is not in the loggedIn list ignore requests
Added removal of client from loggedIn list
Set loggedIn list max to match ConfigManager.Config.Server.Network.MaximumAllowedSessions
* Issue 453 fix