Hi, all:

 I have a question about line 1765 to 1776 in tcp_input():

   /*
    * If the ACK bit is off:  if in SYN-RECEIVED state or SENDSYN
    * flag is on (half-synchronized state), then queue data for
    * later processing; else drop segment and return.
    */
   if ((thflags & TH_ACK) == 0) {
       if (tp->t_state == TCPS_SYN_RECEIVED ||
           (tp->t_flags & TF_NEEDSYN))
           goto step6;
       else
           goto drop;
   }

My question is: if we are currently in TCPS_SYN_RECEIVED state, why does a segment without ACK bother? Why we need to store the segment and process it? Without considering T/TCP, the code should be:

if ((thflags & TH_ACK) == 0) {
   goto drop;
}

Best regards,

blue


_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to