diff -r 69da8fae7882 src/aodv/test/bug-772.cc --- a/src/aodv/test/bug-772.cc Tue Mar 15 12:17:06 2011 +0100 +++ b/src/aodv/test/bug-772.cc Wed Mar 16 14:29:45 2011 -0400 @@ -46,7 +46,7 @@ #include /// Set to true to rewrite reference traces, leave false to run regression tests -const bool WRITE_VECTORS = false; +const bool WRITE_VECTORS = true; namespace ns3 { namespace aodv { diff -r 69da8fae7882 src/aodv/test/tcp-chain-test-0-0.pcap Binary file src/aodv/test/tcp-chain-test-0-0.pcap has changed diff -r 69da8fae7882 src/aodv/test/tcp-chain-test-9-0.pcap Binary file src/aodv/test/tcp-chain-test-9-0.pcap has changed diff -r 69da8fae7882 src/internet/model/rtt-estimator.cc --- a/src/internet/model/rtt-estimator.cc Tue Mar 15 12:17:06 2011 +0100 +++ b/src/internet/model/rtt-estimator.cc Wed Mar 16 14:29:45 2011 -0400 @@ -53,7 +53,7 @@ MakeTimeChecker ()) .AddAttribute ("MinRTO", "Minimum retransmit timeout value", - TimeValue (Seconds (0.2)), + TimeValue (Seconds (1)), MakeTimeAccessor (&RttEstimator::minrto), MakeTimeChecker ()) ; diff -r 69da8fae7882 src/internet/model/tcp-socket-base.cc --- a/src/internet/model/tcp-socket-base.cc Tue Mar 15 12:17:06 2011 +0100 +++ b/src/internet/model/tcp-socket-base.cc Wed Mar 16 14:29:45 2011 -0400 @@ -1296,6 +1296,16 @@ { break; // No more } + + // Nagle's algorithm. Hold off sending if there is unacked data in the + // buffer and the amount of data to send is less than a segment size + if (UnAckDataCount () > 0 && + m_txBuffer.SizeFromSequence (m_nextTxSequence) < m_segmentSize) + { + NS_LOG_LOGIC ("Invoking Nagle's algorithm. Wait to send."); + break; + } + uint32_t s = std::min (w, m_segmentSize); // Send no more than window Ptr p = m_txBuffer.CopyFromSequence (s, m_nextTxSequence); NS_LOG_LOGIC ("TcpSocketBase " << this << " SendPendingData" <<