Index: source/ariba/overlay/BaseOverlay.cpp
===================================================================
--- source/ariba/overlay/BaseOverlay.cpp	(revision 5777)
+++ source/ariba/overlay/BaseOverlay.cpp	(revision 5779)
@@ -118,10 +118,11 @@
 		// get descriptor of first hop
 		rld = getDescriptor(rlid);
-
-		// is first hop a relay path use local relay
-		if ( rld->relay ) relayNode = rld->localRelay;
-
-		// no-> a proper relay node has been found
-		else relayNode = rld->remoteNode;
+		if (rld!=NULL) {
+			// is first hop a relay path use local relay
+			if ( rld->relay ) relayNode = rld->localRelay;
+
+			// no-> a proper relay node has been found
+			else relayNode = rld->remoteNode;
+		}
 	}
 
@@ -1426,6 +1427,5 @@
 					} else {
 						logging_info("Routing relay message to " << relayMsg->getRelayNode().toString() );
-//						sendOverlay( &_overMsg, relayMsg->getRelayNode() );
-						sendOverlay( &_overMsg, relayMsg->getDestNode() );
+						sendOverlay( &_overMsg, relayMsg->getRelayNode() );
 					}
 					ret = true;
@@ -1607,5 +1607,5 @@
 
 			// missed more than four keep-alive messages (10 sec)? -> drop link
-			if (ld->keepAliveMissed > 4) {
+			if (ld->keepAliveMissed > 8) {
 				logging_info( "Link connection request is stale, closing: " << ld );
 				oldlinks.push_back( ld );
Index: source/ariba/overlay/modules/chord/Chord.cpp
===================================================================
--- source/ariba/overlay/modules/chord/Chord.cpp	(revision 5777)
+++ source/ariba/overlay/modules/chord/Chord.cpp	(revision 5779)
@@ -453,5 +453,5 @@
 void Chord::eventFunction() {
 	stabilize_counter++;
-	if (stabilize_counter < 0 || stabilize_counter == 4) {
+	if (stabilize_counter < 0 || stabilize_counter >= 2) {
 
 		// reset counter
@@ -491,5 +491,5 @@
 				back_route& br = *i;
 				if (difftime(br.lastseen,time(NULL))>5) i =
-						back_routes.erase(i);
+						back_routes.erase(i)-1;
 			}
 			logging_info("Running orphan removal");
