From 8be88a788c8ac1173039ec8fb417e468db274492 Mon Sep 17 00:00:00 2001 From: Natale Patriciello Date: Thu, 3 Sep 2015 21:20:53 -0700 Subject: [PATCH] bug 2174: m_rWnd not updated when segments without ACK are received --- src/internet/model/tcp-socket-base.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/internet/model/tcp-socket-base.cc b/src/internet/model/tcp-socket-base.cc index 869f45a39..66a49b9fd 100644 --- a/src/internet/model/tcp-socket-base.cc +++ b/src/internet/model/tcp-socket-base.cc @@ -1048,6 +1048,14 @@ TcpSocketBase::DoForwardUp (Ptr packet, const Address &fromAddress, { UpdateWindowSize (tcpHeader); } + else if (tcpHeader.GetFlags () & TcpHeader::SYN) + { + /* The window field in a segment where the SYN bit is set (i.e., a + * or ) MUST NOT be scaled (from RFC 7323 page 9). But should be + * saved anyway.. + */ + m_rWnd = tcpHeader.GetWindowSize (); + } // TCP state machine code in different process functions // C.f.: tcp_rcv_state_process() in tcp_input.c in Linux kernel