Index: /source/ariba/overlay/BaseOverlay.cpp
===================================================================
--- /source/ariba/overlay/BaseOverlay.cpp	(revision 6869)
+++ /source/ariba/overlay/BaseOverlay.cpp	(revision 6872)
@@ -2049,18 +2049,30 @@
 
 	// which links are old and need deletion?
-	BOOST_FOREACH(NodeID n, linkset){
-		if(remotenodes.find(n) == remotenodes.end()){
-			visual.visDisconnect(visualIdBase, this->nodeId, n, "");
-			linkset.erase(n);
-		}
-	}
+	bool changed = false;
+
+	do{
+		changed = false;
+		BOOST_FOREACH(NodeID n, linkset){
+			if(remotenodes.find(n) == remotenodes.end()){
+				visual.visDisconnect(visualIdBase, this->nodeId, n, "");
+				linkset.erase(n);
+				changed = true;
+				break;
+			}
+		}
+	}while(changed);
 
 	// which links are new and need creation?
-	BOOST_FOREACH(NodeID n, remotenodes){
-		if(linkset.find(n) == linkset.end()){
-			visual.visConnect(visualIdBase, this->nodeId, n, "");
-			linkset.insert(n);
-		}
-	}
+	do{
+		changed = false;
+		BOOST_FOREACH(NodeID n, remotenodes){
+			if(linkset.find(n) == linkset.end()){
+				visual.visConnect(visualIdBase, this->nodeId, n, "");
+				linkset.insert(n);
+				changed = true;
+				break;
+			}
+		}
+	}while(changed);
 
 }
