From 1b79d59968b910b77fa0d17e53ce5b1af087faad Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Thu, 8 Aug 2019 18:39:35 +0300 Subject: [PATCH] internet: call NotifyConnectionFailed on SYN timeout Fixes https://gitlab.com/nsnam/ns-3-dev/issues/76 --- src/internet/model/tcp-socket-base.cc | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/internet/model/tcp-socket-base.cc b/src/internet/model/tcp-socket-base.cc index d83088b1f..48a1e751a 100644 --- a/src/internet/model/tcp-socket-base.cc +++ b/src/internet/model/tcp-socket-base.cc @@ -2577,7 +2577,9 @@ TcpSocketBase::SendEmptyPacket (uint8_t flags) { // No more connection retries, give up NS_LOG_LOGIC ("Connection failed."); m_rtt->Reset (); //According to recommendation -> RFC 6298 - CloseAndNotify (); + NotifyConnectionFailed (); + m_state = CLOSED; + DeallocateEndPoint (); return; } else @@ -3479,21 +3481,14 @@ TcpSocketBase::ReTxTimeout () if (m_state == SYN_SENT) { - if (m_synCount > 0) + NS_ASSERT (m_synCount > 0); + if (m_tcb->m_useEcn == TcpSocketState::On) { - if (m_tcb->m_useEcn != TcpSocketState::Off) - { - SendEmptyPacket (TcpHeader::SYN | TcpHeader::ECE | TcpHeader::CWR); - } - else - { - SendEmptyPacket (TcpHeader::SYN); - } - m_tcb->m_ecnState = TcpSocketState::ECN_DISABLED; + SendEmptyPacket (TcpHeader::SYN | TcpHeader::ECE | TcpHeader::CWR); } else { - NotifyConnectionFailed (); + SendEmptyPacket (TcpHeader::SYN); } return; }