View | Details | Raw Unified | Return to bug 2248
Collapse All | Expand All

(-)a/src/internet/model/tcp-socket-base.cc (-1 / +1 lines)
 Lines 2809-2815    Link Here 
2809
      //       failure (no data to send), return without sending anything
2809
      //       failure (no data to send), return without sending anything
2810
      //       (i.e., terminate steps C.1 -- C.5).
2810
      //       (i.e., terminate steps C.1 -- C.5).
2811
      SequenceNumber32 next;
2811
      SequenceNumber32 next;
2812
      if (!m_txBuffer->NextSeg (&next, m_retxThresh, m_tcb->m_segmentSize))
2812
      if (!m_txBuffer->NextSeg (&next, m_retxThresh, m_tcb->m_segmentSize, m_tcb->m_congState == TcpSocketState::CA_RECOVERY))
2813
        {
2813
        {
2814
          NS_LOG_INFO ("no valid seq to transmit, or no data available");
2814
          NS_LOG_INFO ("no valid seq to transmit, or no data available");
2815
          break;
2815
          break;
(-)a/src/internet/model/tcp-tx-buffer.cc (-2 / +2 lines)
 Lines 917-923    Link Here 
917
917
918
bool
918
bool
919
TcpTxBuffer::NextSeg (SequenceNumber32 *seq, uint32_t dupThresh,
919
TcpTxBuffer::NextSeg (SequenceNumber32 *seq, uint32_t dupThresh,
920
                      uint32_t segmentSize) const
920
                      uint32_t segmentSize, bool isRecovery) const
921
{
921
{
922
  NS_LOG_FUNCTION (this);
922
  NS_LOG_FUNCTION (this);
923
923
 Lines 953-959    Link Here 
953
              *seq = beginOfCurrentPkt;
953
              *seq = beginOfCurrentPkt;
954
              return true;
954
              return true;
955
            }
955
            }
956
          else if (seqPerRule3.GetValue () == 0)
956
          else if (seqPerRule3.GetValue () == 0 && isRecovery)
957
            {
957
            {
958
              isSeqPerRule3Valid = true;
958
              isSeqPerRule3Valid = true;
959
              seqPerRule3 = beginOfCurrentPkt;
959
              seqPerRule3 = beginOfCurrentPkt;
(-)a/src/internet/model/tcp-tx-buffer.h (-1 / +1 lines)
 Lines 270-276    Link Here 
270
   * \param segmentSize segment size
270
   * \param segmentSize segment size
271
   * \return true is seq is updated, false otherwise
271
   * \return true is seq is updated, false otherwise
272
   */
272
   */
273
  bool NextSeg (SequenceNumber32 *seq, uint32_t dupThresh, uint32_t segmentSize) const;
273
  bool NextSeg (SequenceNumber32 *seq, uint32_t dupThresh, uint32_t segmentSize, bool isRecovery) const;
274
274
275
  /**
275
  /**
276
   * \brief Return total bytes in flight
276
   * \brief Return total bytes in flight

Return to bug 2248