|
|
| 1697 |
bool exitedFastRecovery = false; |
1697 |
bool exitedFastRecovery = false; |
| 1698 |
if (ackNumber > m_txBuffer->HeadSequence ()) |
1698 |
if (ackNumber > m_txBuffer->HeadSequence ()) |
| 1699 |
{ |
1699 |
{ |
| 1700 |
m_dupAckCount = 0; |
1700 |
if (m_tcb->m_congState == TcpSocketState::CA_OPEN) |
|
|
1701 |
{ |
| 1702 |
m_dupAckCount = 0; |
| 1703 |
} |
| 1704 |
else |
| 1705 |
{ |
| 1706 |
uint32_t diff = (ackNumber - m_txBuffer->HeadSequence ()) / m_tcb->m_segmentSize; |
| 1707 |
m_dupAckCount -= m_dupAckCount > diff ? diff : m_dupAckCount; |
| 1708 |
std::cout << "resulting " << m_dupAckCount << " diff " << diff << std::endl; |
| 1709 |
} |
| 1701 |
} |
1710 |
} |
| 1702 |
|
1711 |
|
| 1703 |
m_tcb->m_lastAckedSeq = ackNumber; // Update lastAckedSeq |
1712 |
m_tcb->m_lastAckedSeq = ackNumber; // Update lastAckedSeq |