Index: source/ariba/overlay/modules/chord/Chord.cpp
===================================================================
--- source/ariba/overlay/modules/chord/Chord.cpp	(revision 5887)
+++ source/ariba/overlay/modules/chord/Chord.cpp	(revision 5902)
@@ -104,5 +104,4 @@
 seqnum_t Chord::send( OverlayMsg* msg, const LinkID& link ) {
 	if (link.isUnspecified()) return 0;
-	msg->setRelayed(true);
 	return baseoverlay.send_link( msg, link );
 }
@@ -116,5 +115,5 @@
 
 	OverlayMsg msg( typeDiscovery );
-	msg.setRelayed(true);
+	msg.setRegisterRelay(true);
 	Discovery dmsg( Discovery::normal, (uint8_t)ttl, baseoverlay.getEndpointDescriptor() );
 	msg.encapsulate(&dmsg);
@@ -129,5 +128,5 @@
 		// send predecessor discovery
 		OverlayMsg msg( typeDiscovery );
-		msg.setRelayed(true);
+		msg.setRegisterRelay(true);
 		Discovery dmsg( Discovery::predecessor, ttl,
 			baseoverlay.getEndpointDescriptor() );
@@ -139,5 +138,5 @@
 		OverlayMsg msg( typeDiscovery );
 		msg.setSourceEndpoint( baseoverlay.getEndpointDescriptor() );
-		msg.setRelayed(true);
+		msg.setRegisterRelay(true);
 		Discovery dmsg( Discovery::successor, ttl,
 			baseoverlay.getEndpointDescriptor() );
@@ -354,5 +353,4 @@
 				omsg.encapsulate(dmsg);
 				omsg.setService(OverlayInterface::OVERLAY_SERVICE_ID);
-				omsg.setRelayed(true);
 				baseoverlay.send(&omsg, omsg.getDestinationNode());
 				break;
@@ -382,5 +380,4 @@
 			omsg.setDestinationNode(item->id);
 			omsg.setService(OverlayInterface::OVERLAY_SERVICE_ID);
-			omsg.setRelayed(true);
 			baseoverlay.send(&omsg, omsg.getDestinationNode());
 			break;
Index: source/ariba/overlay/modules/chord/detail/chord_routing_table.hpp
===================================================================
--- source/ariba/overlay/modules/chord/detail/chord_routing_table.hpp	(revision 5887)
+++ source/ariba/overlay/modules/chord/detail/chord_routing_table.hpp	(revision 5902)
@@ -267,4 +267,6 @@
 			}
 		}
+		if (best_item != NULL && distance(value, id)<distance(value, best_item->id))
+			return NULL;
 		return best_item;
 	}
