src/internet/model/tcp-socket-base.cc
changeset 11633 6b74df04cf44
parent 11632 88d6e64c778c
equal deleted inserted replaced
11632:88d6e64c778c 11633:6b74df04cf44
  1046     }
  1046     }
  1047   if (tcpHeader.GetFlags () & TcpHeader::ACK)
  1047   if (tcpHeader.GetFlags () & TcpHeader::ACK)
  1048     {
  1048     {
  1049       UpdateWindowSize (tcpHeader);
  1049       UpdateWindowSize (tcpHeader);
  1050     }
  1050     }
       
  1051   else if (tcpHeader.GetFlags () & TcpHeader::SYN)
       
  1052     {
       
  1053       /* The window field in a segment where the SYN bit is set (i.e., a <SYN>
       
  1054        * or <SYN,ACK>) MUST NOT be scaled (from RFC 7323 page 9). But should be
       
  1055        * saved anyway..
       
  1056        */
       
  1057       m_rWnd = tcpHeader.GetWindowSize ();
       
  1058     }
  1051 
  1059 
  1052   // TCP state machine code in different process functions
  1060   // TCP state machine code in different process functions
  1053   // C.f.: tcp_rcv_state_process() in tcp_input.c in Linux kernel
  1061   // C.f.: tcp_rcv_state_process() in tcp_input.c in Linux kernel
  1054   switch (m_state)
  1062   switch (m_state)
  1055     {
  1063     {