[Ns-bugs] [Bug 818] TCP Socket implementation does not set ACK flag on retransmits

code@nsnam.ece.gatech.edu code at nsnam.ece.gatech.edu
Mon Apr 19 07:34:28 PDT 2010


http://www.nsnam.org/bugzilla/show_bug.cgi?id=818


Tom Henderson <tomh at tomh.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tomh at tomh.org




--- Comment #13 from Tom Henderson <tomh at tomh.org>  2010-04-19 10:34:26 EDT ---
I think the main problem is this line (line 176) in the state machine:

  aT[FIN_WAIT_1][ACK_RX]      = SA (FIN_WAIT_2, NEW_ACK);

which says to transition from FIN_WAIT_1 to FIN_WAIT_2 upon receipt of an ACK.

I agree with Josh that the problem is that the mere act of receiving an ACK
(that the ack flag is turned on) is not sufficient to move to FIN_WAIT_2; the
event to transition should be that my FIN was acked.

So, one way to fix it is to work outside the L4 state machine to detect this
(Josh's patch).   However, it may be cleaner to introduce a new event in
tcp-typedefs.h Events_t such as "FIN_ACKED" and detect this event in the
TcpSocketImpl class, and fix the state machine in TcpL4Protocol so that the
transitions from state FIN_WAIT_1 to FIN_WAIT_2 and from CLOSING to TIME_WAIT
are driven by this event.  I think that such a patch would be close to what
Josh has already posted (although the above line 176 needs to be corrected to
stay in FIN_WAIT_1).

-- 
Configure bugmail: http://www.nsnam.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


More information about the Ns-bugs mailing list