equal
deleted
inserted
replaced
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 { |