From 5703ee607e960d7757f965320db7c212cafa8df2 Mon Sep 17 00:00:00 2001 From: Lynne Salameh Date: Tue, 30 Aug 2016 09:29:25 +0200 Subject: [PATCH] tcp: (fixes #2484) corrected the exit from CA_LOSS --- RELEASE_NOTES | 1 + src/internet/model/tcp-socket-base.cc | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 639ba7f3d..ff515cc5a 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -95,6 +95,7 @@ Bugs fixed - Bug 2468 - Simulation with A-MPDU enabled hangs when fragmentation threshold is smaller than MSDU size - Bug 2469 - send Block Ack Request upon short/long retry failures - Bug 2479 - Flow monitor does not a have a "DROP_QUEUE_DISC" drop reason +- Bug 2484 - Corrected the exit from CA_LOSS state in TCP - Bug 2486 - NextTxSequence was not traced back from TCB Known issues diff --git a/src/internet/model/tcp-socket-base.cc b/src/internet/model/tcp-socket-base.cc index cc0bb3bad..ef5048959 100644 --- a/src/internet/model/tcp-socket-base.cc +++ b/src/internet/model/tcp-socket-base.cc @@ -1683,9 +1683,12 @@ TcpSocketBase::ReceivedAck (Ptr packet, const TcpHeader& tcpHeader) m_congestionControl->PktsAcked (m_tcb, segsAcked, m_lastRtt); m_dupAckCount = 0; m_retransOut = 0; - m_congestionControl->CongestionStateSet (m_tcb, TcpSocketState::CA_OPEN); - m_tcb->m_congState = TcpSocketState::CA_OPEN; - NS_LOG_DEBUG ("LOSS -> OPEN"); + if(ackNumber >= m_recover + 1) + { + m_congestionControl->CongestionStateSet (m_tcb, TcpSocketState::CA_OPEN); + m_tcb->m_congState = TcpSocketState::CA_OPEN; + NS_LOG_DEBUG ("LOSS -> OPEN"); + } } if (callCongestionControl)