Index: source/ariba/communication/BaseCommunication.cpp
===================================================================
--- source/ariba/communication/BaseCommunication.cpp	(revision 5993)
+++ source/ariba/communication/BaseCommunication.cpp	(revision 6133)
@@ -428,4 +428,10 @@
 			ld.remoteLink = msg->getLocalLink();
 			ld.remoteLocator = remote->clone();
+			ld.remoteEndpoint.getEndpoints().add(
+							msg->getLocalDescriptor().getEndpoints(),
+							endpoint_set::Layer1_4
+						);
+
+
 			localDescriptor.getEndpoints().add(
 				msg->getRemoteDescriptor().getEndpoints(),
Index: source/ariba/overlay/BaseOverlay.cpp
===================================================================
--- source/ariba/overlay/BaseOverlay.cpp	(revision 5993)
+++ source/ariba/overlay/BaseOverlay.cpp	(revision 6133)
@@ -916,5 +916,15 @@
 
 	// resolve end-point descriptor from the base-overlay routing table
-	return overlayInterface->resolveNode( node );
+	const EndpointDescriptor& ep = overlayInterface->resolveNode( node );
+	if(ep != EndpointDescriptor::UNSPECIFIED()) return ep;
+
+	// see if we can find the node in our own table
+	BOOST_FOREACH(const LinkDescriptor* ld, links){
+		if(ld->remoteNode != node) continue;
+		const EndpointDescriptor& ep = bc->getEndpointDescriptor(ld->communicationId);
+		if(ep != EndpointDescriptor::UNSPECIFIED()) return ep;
+	}
+
+	return EndpointDescriptor::UNSPECIFIED();
 }
 
