[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