Apply Patch for Bug 237 ns-3.1-RC3
authorCraig Dowell <craigdo@ee.washington.edu>
Fri, 27 Jun 2008 14:56:18 -0700
changeset 3327 ea16c44eb90d
parent 3326 239c4bc21ebf
child 3328 509acaf2966c
Apply Patch for Bug 237
src/internet-stack/tcp-socket-impl.cc
src/internet-stack/tcp-socket-impl.h
--- a/src/internet-stack/tcp-socket-impl.cc	Fri Jun 27 14:38:08 2008 -0700
+++ b/src/internet-stack/tcp-socket-impl.cc	Fri Jun 27 14:56:18 2008 -0700
@@ -80,8 +80,7 @@
     m_pendingData (0),
     m_rtt (0),
     m_lastMeasuredRtt (Seconds(0.0)),
-    m_rxAvailable (0), 
-    m_wouldBlock (false) 
+    m_rxAvailable (0)
 {
   NS_LOG_FUNCTION (this);
 }
@@ -126,7 +125,6 @@
     m_cnTimeout (sock.m_cnTimeout),
     m_cnCount (sock.m_cnCount),
     m_rxAvailable (0),
-    m_wouldBlock (false),
     m_sndBufSize (sock.m_sndBufSize),
     m_rcvBufSize(sock.m_rcvBufSize)
 {
@@ -356,7 +354,6 @@
   {
     if (p->GetSize() > GetTxAvailable ())
     {
-      m_wouldBlock = true;
       m_errno = ERROR_MSGSIZE;
       return -1;
     }
@@ -796,9 +793,8 @@
       {
         m_highestRxAck = tcpHeader.GetAckNumber ();
         // Data freed from the send buffer; notify any blocked sender
-        if (m_wouldBlock)
+        if (GetTxAvailable () > 0)
           {
-            m_wouldBlock = false;
             NotifySend (GetTxAvailable ());
           }
       }
@@ -1168,11 +1164,8 @@
   NS_LOG_LOGIC ("TCP " << this << " NewAck " << ack 
            << " numberAck " << (ack - m_highestRxAck)); // Number bytes ack'ed
   m_highestRxAck = ack;         // Note the highest recieved Ack
-  if (m_wouldBlock)
+  if (GetTxAvailable () > 0)
     {
-      // m_highestRxAck advancing means some data was acked, and the size 
-      // of free space in the buffer has increased
-      m_wouldBlock = false;
       NotifySend (GetTxAvailable ());
     }
   if (ack > m_nextTxSequence) 
--- a/src/internet-stack/tcp-socket-impl.h	Fri Jun 27 14:38:08 2008 -0700
+++ b/src/internet-stack/tcp-socket-impl.h	Fri Jun 27 14:56:18 2008 -0700
@@ -216,8 +216,6 @@
   // Temporary queue for delivering data to application
   uint32_t m_rxAvailable;
 
-  bool m_wouldBlock;  // set to true whenever socket would block on send()
-
   // Attributes
   uint32_t m_sndBufSize;   // buffer limit for the outgoing queue
   uint32_t m_rcvBufSize;   // maximum receive socket buffer size