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

(-)a/src/internet-stack/tcp-socket-impl.cc (-1 / +19 lines)
 Lines 1501-1507    Link Here 
1501
    }
1501
    }
1502
  // See if all pending ack'ed; if so we can delete the data
1502
  // See if all pending ack'ed; if so we can delete the data
1503
  if (m_pendingData)
1503
  if (m_pendingData)
1504
    { // Data exists, see if can be deleted
1504
    { // Data exists, see if can be entirely deleted
1505
      if (m_pendingData->SizeFromSeq (m_firstPendingSequence, m_highestRxAck) == 0)
1505
      if (m_pendingData->SizeFromSeq (m_firstPendingSequence, m_highestRxAck) == 0)
1506
        { // All pending acked, can be deleted
1506
        { // All pending acked, can be deleted
1507
          m_pendingData->Clear ();
1507
          m_pendingData->Clear ();
 Lines 1513-1518    Link Here 
1513
                        Simulator::GetDelayLeft (m_retxEvent)).GetSeconds());
1513
                        Simulator::GetDelayLeft (m_retxEvent)).GetSeconds());
1514
          m_retxEvent.Cancel ();
1514
          m_retxEvent.Cancel ();
1515
        }
1515
        }
1516
      else // else delete just a portion
1517
        {
1518
          while (m_pendingData->data.begin () != m_pendingData->data.end ())
1519
            {
1520
              std::vector< Ptr<Packet> >::iterator dataI = m_pendingData->data.begin ();
1521
              Ptr<Packet> data = *dataI;
1522
              if (m_firstPendingSequence + SequenceNumber (data->GetSize ()) <= m_highestRxAck)
1523
                {
1524
                  m_pendingData->data.erase (dataI);
1525
                  m_pendingData->size -= data->GetSize ();
1526
                  m_firstPendingSequence += data->GetSize ();
1527
                }
1528
              else
1529
                {
1530
                  break;
1531
                }
1532
            }
1533
        }
1516
    }
1534
    }
1517
  // Try to send more data
1535
  // Try to send more data
1518
  SendPendingData (m_connected);
1536
  SendPendingData (m_connected);

Return to bug 829