@@ -, +, @@ --- src/internet/model/tcp-socket-base.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- a/src/internet/model/tcp-socket-base.cc +++ a/src/internet/model/tcp-socket-base.cc @@ -1775,8 +1775,10 @@ TcpSocketBase::ProcessSynSent (Ptr packet, const TcpHeader& tcpHeader) m_rxBuffer->SetNextRxSequence (tcpHeader.GetSequenceNumber () + SequenceNumber32 (1)); m_tcb->m_highTxMark = ++m_tcb->m_nextTxSequence; m_txBuffer->SetHeadSequence (m_tcb->m_nextTxSequence); - SendEmptyPacket (TcpHeader::ACK); - SendPendingData (m_connected); + //Complete the 3-way handshake by sending the pending data or an empty ack + if(!SendPendingData (m_connected)){ + SendEmptyPacket (TcpHeader::ACK); + } Simulator::ScheduleNow (&TcpSocketBase::ConnectionSucceeded, this); // Always respond to first data packet to speed up the connection. // Remove to get the behaviour of old NS-3 code. --