Pass TcpSockets as smart pointers into demux callbacks
authorRaj Bhattacharjea <raj.b@gatech.edu>
Thu Mar 20 14:04:24 2008 -0400 (2008-03-20)
changeset 26684956586bd798
parent 2667 2324032b8f90
child 2669 43ec4c995363
Pass TcpSockets as smart pointers into demux callbacks
fixes TcpSocket memory leaks
src/internet-node/tcp-socket.cc
     1.1 --- a/src/internet-node/tcp-socket.cc	Thu Mar 20 10:25:59 2008 -0700
     1.2 +++ b/src/internet-node/tcp-socket.cc	Thu Mar 20 14:04:24 2008 -0400
     1.3 @@ -125,6 +125,7 @@
     1.4  TcpSocket::~TcpSocket ()
     1.5  {
     1.6    NS_LOG_FUNCTION;
     1.7 +  NS_LOG_PARAMS(this);
     1.8    m_node = 0;
     1.9    if (m_endPoint != 0)
    1.10      {
    1.11 @@ -204,8 +205,8 @@
    1.12      {
    1.13        return -1;
    1.14      }
    1.15 -  m_endPoint->SetRxCallback (MakeCallback (&TcpSocket::ForwardUp, this));
    1.16 -  m_endPoint->SetDestroyCallback (MakeCallback (&TcpSocket::Destroy, this));
    1.17 +  m_endPoint->SetRxCallback (MakeCallback (&TcpSocket::ForwardUp, Ptr<TcpSocket>(this)));
    1.18 +  m_endPoint->SetDestroyCallback (MakeCallback (&TcpSocket::Destroy, Ptr<TcpSocket>(this)));
    1.19    m_localAddress = m_endPoint->GetLocalAddress ();
    1.20    m_localPort = m_endPoint->GetLocalPort ();
    1.21    return 0;
    1.22 @@ -777,8 +778,8 @@
    1.23    //the cloned socket with be in listen state, so manually change state
    1.24    m_state = SYN_RCVD;
    1.25    //equivalent to FinishBind
    1.26 -  m_endPoint->SetRxCallback (MakeCallback (&TcpSocket::ForwardUp, this));
    1.27 -  m_endPoint->SetDestroyCallback (MakeCallback (&TcpSocket::Destroy, this));
    1.28 +  m_endPoint->SetRxCallback (MakeCallback (&TcpSocket::ForwardUp, Ptr<TcpSocket>(this)));
    1.29 +  m_endPoint->SetDestroyCallback (MakeCallback (&TcpSocket::Destroy, Ptr<TcpSocket>(this)));
    1.30    ProcessPacketAction(SYN_ACK_TX, p, h, fromAddress);
    1.31   }
    1.32