diff -r 5f8e99c4c456 src/internet-stack/tcp-socket-impl.cc --- a/src/internet-stack/tcp-socket-impl.cc Tue Apr 13 18:41:11 2010 -0700 +++ b/src/internet-stack/tcp-socket-impl.cc Wed Apr 14 14:20:51 2010 -0400 @@ -674,10 +674,6 @@ Address fromAddress = InetSocketAddress (saddr, port); Address toAddress = InetSocketAddress (daddr, m_endPoint->GetLocalPort()); - if (m_shutdownRecv) - { - return; - } TcpHeader tcpHeader; packet->RemoveHeader (tcpHeader); @@ -735,7 +731,10 @@ if (saveState < CLOSING && (m_state == CLOSING || m_state == TIMED_WAIT) ) { NS_LOG_LOGIC ("TcpSocketImpl peer closing, send EOF to application"); - NotifyDataRecv (); + if (!m_shutdownRecv) + { + NotifyDataRecv (); + } } if (needCloseNotify && !m_closeNotified) @@ -1296,7 +1295,10 @@ m_rxAvailable += p->GetSize (); RxBufFinishInsert (tcpHeader.GetSequenceNumber ()); m_rxBufSize += p->GetSize (); - NotifyDataRecv (); + if (!m_shutdownRecv) + { + NotifyDataRecv (); + } if (m_closeNotified) { NS_LOG_LOGIC ("Tcp " << this << " HuH? Got data after closeNotif"); @@ -1392,7 +1394,10 @@ m_rxAvailable += p->GetSize (); m_rxBufSize += p->GetSize(); RxBufFinishInsert(start); - NotifyDataRecv (); + if (!m_shutdownRecv) + { + NotifyDataRecv (); + } } else { // debug