Index: source/ariba/overlay/BaseOverlay.cpp
===================================================================
--- source/ariba/overlay/BaseOverlay.cpp	(revision 5405)
+++ source/ariba/overlay/BaseOverlay.cpp	(revision 5406)
@@ -146,10 +146,10 @@
 }
 
-/// forwards a message over relays/overlay/directly using link descriptor
+/// forwards a message over relays/directly using link descriptor
 seqnum_t BaseOverlay::sendMessage( Message* message, const LinkDescriptor* ld ) {
 
 	// directly send message
 	if ( !ld->communicationId.isUnspecified() && ld->communicationUp ) {
-		logging_debug("sendMessage: Sending message via Base Communication");
+		logging_debug("Send: Sending message via Base Communication");
 		return bc->sendMessage( ld->communicationId, message );
 	}
@@ -157,5 +157,6 @@
 	// relay message
 	else if ( ld->relay ) {
-		logging_debug("sendMessage: Relaying message to node "
+
+		logging_debug("Send: Relaying message to node "
 			<< ld->remoteNode.toString()
 			<< " using relay " << ld->localRelay
@@ -165,6 +166,6 @@
 		LinkDescriptor* rld = getRelayDescriptor(ld->localRelay);
 		if (rld==NULL) {
-			logging_error("sendMessage: Relay descriptor for relay " <<
-				ld->localRelay.toString() << " unknown.");
+			logging_error("Send: Relay descriptor for relay " <<
+				ld->localRelay.toString() << " is unknown.");
 			return -1;
 		}
@@ -183,12 +184,9 @@
 	}
 
-	// route message using overlay
+	// error
 	else {
-		logging_error("Could not send message descriptor=" << ld );
-		logging_debug( "sendMessage: Routing message to node " << ld->remoteNode.toString() );
-		overlayInterface->routeMessage( ld->remoteNode, message );
-		return 0;
-	}
-
+		logging_error( "Could not send message descriptor=" << ld );
+		return -1;
+	}
 	return -1;
 }
@@ -1399,9 +1397,21 @@
 			LinkDescriptor* rld = getDescriptor( overlayMsg->getRelayLink() );
 			logging_force( "Received direct link convert notification for " << rld );
+
+			// set communcation link id and set it up
 			rld->communicationId = ld->communicationId;
+
+			// this is neccessary since this link was a relay link before!
 			rld->communicationUp = true;
+
+			// this is not a relay link anymore!
 			rld->relay = false;
-			rld->localRelay = NodeID::UNSPECIFIED;
+			rld->localRelay  = NodeID::UNSPECIFIED;
 			rld->remoteRelay = NodeID::UNSPECIFIED;
+
+			// mark used and alive!
+			rld->markAsUsed();
+			rld->markAlive();
+
+			// erase the original descriptor
 			eraseDescriptor(ld->overlayId);
 			break;
