From a5cf957540df97467f8fee60d68df9b54be79e41 Mon Sep 17 00:00:00 2001 From: Natale Patriciello Date: Fri, 8 Jun 2018 18:48:49 +0200 Subject: [PATCH] tcp: (fixes #2914) Adv Win resilience to SequenceNumber32 wrap-around --- RELEASE_NOTES | 1 + src/internet/model/tcp-socket-base.cc | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 967c39891..54ca21876 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -32,6 +32,7 @@ New user-visible features Bugs fixed ---------- +- Bug 2914 - Adv Win resilience to SequenceNumber wrap-around - Bug 2921 - tcp: Add min_cwnd variable to LEDBAT - Bug 2911 - aodv: Binary exponential backoff can become unlimited - Bug 2901 - Add CommandLine::Parse (const std::vector> args) diff --git a/src/internet/model/tcp-socket-base.cc b/src/internet/model/tcp-socket-base.cc index 14383f2ea..b2777e98a 100644 --- a/src/internet/model/tcp-socket-base.cc +++ b/src/internet/model/tcp-socket-base.cc @@ -2957,9 +2957,9 @@ TcpSocketBase::AdvertisedWindowSize (bool scale) const } else { - uint32_t max = m_rxBuffer->MaxRxSequence ().GetValue (); - uint32_t next = m_rxBuffer->NextRxSequence ().GetValue (); - w = ( max > next ) ? max - next : 0; + NS_ASSERT_MSG (m_rxBuffer->MaxRxSequence () - m_rxBuffer->NextRxSequence () >= 0, + "Unexpected sequence number values"); + w = static_cast (m_rxBuffer->MaxRxSequence () - m_rxBuffer->NextRxSequence ()); } // Ugly, but we are not modifying the state, that variable