Index: source/ariba/utility/transport/tcpip/protlib/tp_over_tcp.cpp
===================================================================
--- source/ariba/utility/transport/tcpip/protlib/tp_over_tcp.cpp	(revision 7040)
+++ source/ariba/utility/transport/tcpip/protlib/tp_over_tcp.cpp	(revision 8606)
@@ -253,5 +253,6 @@
 	if (newmsg)
 	{
-	  newmsg->send_to(tpparam.source);
+	  bool ret = newmsg->send_to(tpparam.source);
+	  if(!ret) delete newmsg;
 	  return assoc;
 	}
@@ -413,9 +414,15 @@
     // both parameters will be freed after message was sent!
     
-    TPoverTCPMsg* internalmsg= new TPoverTCPMsg(netmsg,new appladdress(*addr));
+    appladdress* apl=new appladdress(*addr);
+    TPoverTCPMsg* internalmsg= new TPoverTCPMsg(netmsg,apl);
     if (internalmsg)
     {
       // send the internal message to the sender thread queue
-      internalmsg->send(tpparam.source,destqueue);
+      bool sent = internalmsg->send(tpparam.source,destqueue);
+      if (!sent) {
+    	  delete internalmsg->get_appladdr();
+    	  delete internalmsg;
+    	  internalmsg = NULL;
+      }
     }
   }
@@ -659,5 +666,5 @@
     if (internalmsg == 0)
     {
-      ERRLog(tpparam.name, methodname << "received not an TPoverTCPMsg but a" << internal_thread_msg->get_type_name());      
+      ERRLog(tpparam.name, methodname << "received not an TPoverTCPMsg but a" << internal_thread_msg->get_type_name());
     }
     else
@@ -694,5 +701,7 @@
     {
       terminate= true;
-    }  
+    }
+
+    delete internalmsg;
   } // end while
   
@@ -929,4 +938,5 @@
 	if ( ret < 0 )
 	{
+	  delete netmsg;
 	  if (errno!=EAGAIN && errno!=EWOULDBLOCK)
 	  {
@@ -1106,4 +1116,5 @@
 
   receiver_thread_argp->terminated= true;
+  delete netmsg;
 
   Log(DEBUG_LOG,LOG_NORMAL, tpparam.name, methodname << "Thread <" << pthread_self() << "> terminated");
@@ -1701,4 +1712,5 @@
 {
   init= false;
+  this->connmap.clear();
 
   Log(DEBUG_LOG,LOG_NORMAL, tpparam.name,  "Destructor called");
Index: source/ariba/utility/transport/tcpip/protlib/tp_over_tcp.h
===================================================================
--- source/ariba/utility/transport/tcpip/protlib/tp_over_tcp.h	(revision 7040)
+++ source/ariba/utility/transport/tcpip/protlib/tp_over_tcp.h	(revision 8606)
@@ -247,4 +247,6 @@
     message(type_transport, source), peer_assoc(0), type(send_data), netmsg(netmsg), addr(addr) {}
 
+  virtual ~TPoverTCPMsg() {}
+
   const AssocData* get_peer_assoc() const { return peer_assoc; }
   TPoverTCPMsg::msg_t get_msgtype() const { return type; }
