|
|
| 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 () |
|
|
| 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 |
{ |