From 91f3778acc2cca9ca25e8e56970f0d45106ee2bf Mon Sep 17 00:00:00 2001 From: Natale Patriciello Date: Sat, 3 Mar 2018 11:52:38 +0100 Subject: [PATCH] tcp: Try to take more data from the app before sending --- CHANGES.html | 1 + src/internet/model/tcp-socket-base.cc | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGES.html b/CHANGES.html index 3fde2a9c4..17dcf2e3e 100644 --- a/CHANGES.html +++ b/CHANGES.html @@ -1522,6 +1522,7 @@ a std::map of interface IDs and TTLs for the route.

Changed behavior:


diff --git a/src/internet/model/tcp-socket-base.cc b/src/internet/model/tcp-socket-base.cc index ca677bdaf..6b2da7501 100644 --- a/src/internet/model/tcp-socket-base.cc +++ b/src/internet/model/tcp-socket-base.cc @@ -2806,8 +2806,16 @@ TcpSocketBase::SendPendingData (bool withAck) // It's time to transmit, but before do silly window and Nagle's check uint32_t availableData = m_txBuffer->SizeFromSequence (next); + // If there's less app data than the full window, ask the app for more + // data before trying to send + if (availableData < availableWindow) + { + NotifySend (GetTxAvailable ()); + } + // Stop sending if we need to wait for a larger Tx window (prevent silly window syndrome) - if (availableWindow < m_tcb->m_segmentSize && availableData > availableWindow) + // but continue if we don't have data + if (availableWindow < m_tcb->m_segmentSize && availableData > availableWindow) { NS_LOG_LOGIC ("Preventing Silly Window Syndrome. Wait to send."); break; // No more