[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ns] FullTcp & "done"
Haobo,
here's a problem I have with FullTcp, and yes I'm still in the process
of nailing the bug that causes my H323 to sigsev when deleting the agents. What
happens is : the call to close causes FullTcp to go into state 6
(TCP_FIN_WAIT_1) at the next msg reception it goes into state 7 (TCPS_CLOSING)
and should be waiting for FIN ACK (at least that's what it says in tcp-full.h)
but instead, "done" is "evalf"-ed and the agent is detached and deleted. Here's
the piece of code in tcp-full:recv :
1766 // haoboy: Is here the place for done{} of active close?
1767 // It cannot be put in the switch above because we might need to do
1768 // send_much() (an ACK)
1769 Tcl::instance().evalf("%s done", this->name());
1770
1771 return;
As far as my knoweledge of TCP goes, i really don't understand why this call is
here? Shouldn't evalf be called only if state_ is TCPS_LAST_ACK and we are
getting FIN ACK (wich means we are _now_ in state TCPS_CLOSED). I would
appreciate some info, to me that piece of code above seems not to be robust,
thanks.
Tarik