Index: source/ariba/utility/transport/rfcomm/rfcomm.cpp
===================================================================
--- source/ariba/utility/transport/rfcomm/rfcomm.cpp	(revision 5422)
+++ source/ariba/utility/transport/rfcomm/rfcomm.cpp	(revision 5423)
@@ -124,11 +124,12 @@
 
 	// not found, or not up? ->try to (re-)connect
-	if (info==NULL || !info->up) {
+	if (info==NULL || !info->up || info->socket.is_open() ) {
 		logging_debug( "Connecting to " << endpoint.to_string() );
-		if (info != NULL && !info->up) {
+		if (info != NULL && (!info->up || !info->socket.is_open())) {
 			logging_debug("Old link is down. Trying to re-establish link.");
 		} else {
 			info = new link_info(io);
 		}
+		info->connect_retries = 0;
 		info->remote = endpoint;
 		info->socket.async_connect( convert(endpoint), boost::bind(
@@ -216,4 +217,6 @@
 	}
 
+	links_mutex.lock();
+
 	// convert endpoints
 	info->up = true;
@@ -221,9 +224,8 @@
 	info->remote = convert( info->socket.remote_endpoint() );
 
-	logging_debug("Accepting incoming connection from "
+	logging_debug("Accepted incoming connection from "
 		<< info->remote.to_string() );
 
 	// add to list
-	links_mutex.lock();
 	links.push_back(info);
 	links_mutex.unlock();
