Index: source/ariba/overlay/BaseOverlay.cpp
===================================================================
--- source/ariba/overlay/BaseOverlay.cpp	(revision 5897)
+++ source/ariba/overlay/BaseOverlay.cpp	(revision 5900)
@@ -272,5 +272,5 @@
 	next_link = getRelayLinkTo( destination );
 	if (next_link != NULL) {
-		next_link->setRelaying();
+		if (message->isRelayed()) next_link->setRelaying();
 		return send(message, next_link);
 	}
@@ -315,20 +315,8 @@
 	// handle relayed link
 	if (ldr->relayed) {
-		logging_debug("send(): Resolving direct link for relayed link to "
+		logging_debug("Resolving direct link for relayed link to "
 			<< ldr->remoteNode);
-		ld = getRelayLinkTo( ldr->remoteNode );
-		if (ld==NULL) {
-			LinkID lnk = overlayInterface->getNextLinkId(ldr->remoteNode);
-			if (!lnk.isUnspecified())
-				ld = getDescriptor(lnk);
-			if (ld!=NULL && ld->relayed)
-				ld = NULL;
-		}
-		if (ld==NULL) {
-			logging_error("Direct link not found.");
-			return -1;
-		}
 		message->setRelayed();
-		ld->setRelaying();
+		send(message, ldr->remoteNode);
 	} else
 		ld = ldr;
@@ -339,5 +327,5 @@
 		return bc->sendMessage( ld->communicationId, message );
 	} else {
-		logging_error("send(): Could not send mesage. "
+		logging_error("send(): Could not send message. "
 				"Not a relayed link and direct link is not up.");
 		return -1;
