diff -r 46bb9407bd72 src/internet/model/tcp-newreno.cc --- a/src/internet/model/tcp-newreno.cc Fri Feb 21 11:50:18 2014 -0500 +++ b/src/internet/model/tcp-newreno.cc Fri Feb 21 10:29:09 2014 -0800 @@ -128,8 +128,9 @@ m_cWnd -= seq - m_txBuffer.HeadSequence (); m_cWnd += m_segmentSize; // increase cwnd NS_LOG_INFO ("Partial ACK in fast recovery: cwnd set to " << m_cWnd); + m_txBuffer.DiscardUpTo(seq); // Bug 1850: retransmit before NewAck() + DoRetransmit (); // Assume the next seq is lost. Retransmit lost packet TcpSocketBase::NewAck (seq); // update m_nextTxSequence and send new data if allowed by window - DoRetransmit (); // Assume the next seq is lost. Retransmit lost packet return; } else if (m_inFastRec && seq >= m_recover)