From: Andrew Mann <rhad@us...> - 2003-03-03 06:13:45
Update of /cvsroot/planeshift/planeshift/docs
In directory sc8-pr-cvs1:/tmp/cvs-serv27748
Rewrite of NetBase::CheckCompleteMessage. Fix for potential packet loss and rare crash. Incoming buffer allocation and packet splitting code altered slightly to respect MAXPACKETSIZE. Comments updated. MAXPACKETSIZE set to 515 bytes.
RCS file: /cvsroot/planeshift/planeshift/docs/history.txt,v
retrieving revision 1.572
retrieving revision 1.573
diff -C2 -d -r1.572 -r1.573
*** history.txt 3 Mar 2003 04:21:11 -0000 1.572
--- history.txt 3 Mar 2003 06:13:41 -0000 1.573
*** 1,2 ****
--- 1,25 ----
+ **** 2003-03-03 by Andrew Mann
+ - Rewrite of NetBase::CheckCompleteMessage. Fix for potential packet loss
+ and rare crash. Incoming buffer allocation and packet splitting code
+ altered slightly to respect MAXPACKETSIZE. Comments updated.
+ MAXPACKETSIZE set to 515 bytes.
+ - Netbase::CheckCompleteMessage() did not check for the clientid during
+ the assembly of split packet data. On the server this probably made
+ failed packet assembly quite common. It also used a BinaryTreeIterator
+ to iterate through the tree and delete nodes that matched the recently
+ assembled packet. This deleted the node from under the Iterator, causing
+ the next call to the iterator to operate on freed memory.
+ - Netbase::SendMessage() now accounts for the size of the psNetPacket header
+ information when determining if a packet needs to be split.
+ - Netbase::CheckIn() now allocates buffers for incoming data based on
+ MAXPACKETSIZE (previously was a fixed 2048 byte size).
+ - One debug message erroneously printed a "Packet doubled in ack list"
+ message when the packet was not doubled, and did not print it when the
+ packet was doubled.
+ - MAXPACKETSIZE set to 515 to maintain compatability with existing builds
+ that will erroneously send 515 byte packets during the splitting process.
+ - Comments in netpacket.h adjusted to reflect the current functionality.
**** 2003-03-03 by Andrew Craig
- Finally fixed the problem with the leaf_assert assert. It turns out that