bug 1256: Unnecessary SND.NXT advance, missing ACK for Out of Order segments
authorTom Henderson <tomh@tomh.org>
Sun, 26 Aug 2012 23:23:52 -0700
changeset 9020 200c9dd61e1a
parent 9019 31c638668fde
child 9021 4e780b4a0969
bug 1256: Unnecessary SND.NXT advance, missing ACK for Out of Order segments
RELEASE_NOTES
src/internet/model/tcp-socket-base.cc
--- a/RELEASE_NOTES	Sun Aug 26 23:09:13 2012 -0700
+++ b/RELEASE_NOTES	Sun Aug 26 23:23:52 2012 -0700
@@ -63,6 +63,7 @@
 Bugs fixed
 ----------
  - bug 101 - random variable initialization
+ - bug 1256 - Unnecessary SND.NXT advance, missing ACK for Out of Order segments
  - bug 1308 - Nix-vector; do not process packets to self
  - bug 1386 - assert if PositionAllocator not provided to 
               RandomWaypointMobilityModel
--- a/src/internet/model/tcp-socket-base.cc	Sun Aug 26 23:09:13 2012 -0700
+++ b/src/internet/model/tcp-socket-base.cc	Sun Aug 26 23:23:52 2012 -0700
@@ -1236,7 +1236,7 @@
   // Extract the flags. PSH and URG are not honoured.
   uint8_t tcpflags = tcpHeader.GetFlags () & ~(TcpHeader::PSH | TcpHeader::URG);
 
-  if (packet->GetSize () > 0)
+  if (packet->GetSize () > 0 && tcpflags != TcpHeader::ACK)
     { // Bare data, accept it
       ReceivedData (packet, tcpHeader);
     }