Index: source/ariba/communication/BaseCommunication.cpp
===================================================================
--- source/ariba/communication/BaseCommunication.cpp	(revision 5615)
+++ source/ariba/communication/BaseCommunication.cpp	(revision 5616)
@@ -65,5 +65,5 @@
 	}
 	endpoint_reference ref;
-	ref.endpoint = endpoint;
+	ref.endpoint = endpoint->clone();
 	ref.count = 0;
 	remote_endpoints.push_back(ref);
@@ -79,4 +79,5 @@
 				logging_info("No more links to " << i->endpoint->to_string() << ": terminating transports!");
 				transport->terminate(i->endpoint);
+				delete i->endpoint;
 				remote_endpoints.erase(i);
 			}
@@ -367,5 +368,5 @@
 			ld->remoteLocator = remote->clone();
 			ld->remoteEndpoint = msg->getLocalDescriptor();
-			add_endpoint(ld);
+			add_endpoint(ld->remoteLocator);
 
 			// add layer 1-3 addresses
@@ -431,5 +432,5 @@
 			);
 			ld.up = true;
-			add_endpoint(ld);
+			add_endpoint(ld->remoteLocator);
 
 			logging_debug( "Link is now up with local id "
