|
|
| 347 |
" deferring close, state " << m_state); |
347 |
" deferring close, state " << m_state); |
| 348 |
return 0; |
348 |
return 0; |
| 349 |
} |
349 |
} |
| 350 |
m_finSequence = m_nextTxSequence + SequenceNumber32 (1); |
350 |
//m_finSequence = m_nextTxSequence + SequenceNumber32 (1); |
| 351 |
Actions_t action = ProcessEvent (APP_CLOSE); |
351 |
Actions_t action = ProcessEvent (APP_CLOSE); |
| 352 |
ProcessAction (action); |
352 |
ProcessAction (action); |
| 353 |
return 0; |
353 |
return 0; |
|
|
| 947 |
if(tcpHeader.GetFlags() & TcpHeader::FIN) |
947 |
if(tcpHeader.GetFlags() & TcpHeader::FIN) |
| 948 |
{ |
948 |
{ |
| 949 |
++m_nextRxSequence; //bump this to account for the FIN |
949 |
++m_nextRxSequence; //bump this to account for the FIN |
| 950 |
m_nextTxSequence = m_finSequence; |
950 |
//m_nextTxSequence = m_finSequence; |
| 951 |
} |
951 |
} |
| 952 |
SendEmptyPacket (TcpHeader::ACK); |
952 |
SendEmptyPacket (TcpHeader::ACK); |
| 953 |
break; |
953 |
break; |
|
|
| 1172 |
m_nextTxSequence + SequenceNumber32 (sz)); |
1172 |
m_nextTxSequence + SequenceNumber32 (sz)); |
| 1173 |
if (m_closeOnEmpty && (remainingData == 0)) |
1173 |
if (m_closeOnEmpty && (remainingData == 0)) |
| 1174 |
{ |
1174 |
{ |
| 1175 |
m_finSequence = m_nextTxSequence + SequenceNumber32 (1 + sz); |
1175 |
//m_finSequence = m_nextTxSequence + SequenceNumber32 (1 + sz); |
| 1176 |
flags = TcpHeader::FIN; |
1176 |
flags = TcpHeader::FIN; |
| 1177 |
m_state = FIN_WAIT_1; |
1177 |
m_state = FIN_WAIT_1; |
| 1178 |
} |
1178 |
} |