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

(-)tcp-socket-base.cc (-2 / +33 lines)
 Lines 947-954    Link Here 
947
      NS_LOG_LOGIC (this << " Leaving zerowindow persist state");
947
      NS_LOG_LOGIC (this << " Leaving zerowindow persist state");
948
      m_persistEvent.Cancel ();
948
      m_persistEvent.Cancel ();
949
    }
949
    }
950
  m_rWnd = tcpHeader.GetWindowSize ();
950
  RefreshWindowSize (tcpHeader);
951
  m_rWnd <<= m_rcvScaleFactor;
952
951
953
  // Discard fully out of range data packets
952
  // Discard fully out of range data packets
954
  if (packet->GetSize ()
953
  if (packet->GetSize ()
 Lines 2726-2731    Link Here 
2726
               option->GetTimestamp () << " echo=" << m_timestampToEcho);
2725
               option->GetTimestamp () << " echo=" << m_timestampToEcho);
2727
}
2726
}
2728
2727
2728
void TcpSocketBase::RefreshWindowSize(TcpHeader &header)
2729
{
2730
    //if connection is not established, just receive window size from packets
2731
    //because if in stage of 3-way handshakes reordering can not occure, because
2732
    // only 1 packet in specail time in way.
2733
    if (m_state  < ESTABLISHED)
2734
    {
2735
        m_rWnd = header.GetWindowSize ();
2736
        m_rWnd <<= m_rcvScaleFactor;
2737
        return;
2738
    }
2739
    //if connection establish or lead to finish
2740
    //if new sequence or ack number were received less than which was before
2741
    //it's mean that re-ordering occure
2742
    bool reorder = false;
2743
    if (header.GetAckNumber ().GetValue () < m_biggestAckNumber.GetValue ())
2744
    {
2745
        reorder = true;
2746
    }
2747
    if (header.GetSequenceNumber ().GetValue () < m_biggestSequenceNumber.GetValue ())
2748
    {
2749
        reorder = true;
2750
    }
2751
    if (reorder == false)
2752
    {
2753
        m_rWnd = header.GetWindowSize ();
2754
        m_rWnd <<= m_rcvScaleFactor;
2755
        m_biggestAckNumber = header.GetAckNumber();
2756
        m_biggestSequenceNumber = header.GetSequenceNumber ();
2757
    }
2758
}
2759
2729
void
2760
void
2730
TcpSocketBase::SetMinRto (Time minRto)
2761
TcpSocketBase::SetMinRto (Time minRto)
2731
{
2762
{

Return to bug 2058