Index: source/ariba/overlay/BaseOverlay.cpp
===================================================================
--- source/ariba/overlay/BaseOverlay.cpp	(revision 5483)
+++ source/ariba/overlay/BaseOverlay.cpp	(revision 5484)
@@ -1538,4 +1538,5 @@
 				logging_force( "Link connection request is stale, closing: " << ld );
 				oldlinks.push_back( ld );
+				continue;
 			}
 		}
@@ -1544,11 +1545,14 @@
 
 		// drop links that are dropped and not used as relay
-		if (ld->dropWhenRelaysLeft && !ld->usedAsRelay && !ld->autolink)
+		if (ld->dropWhenRelaysLeft && !ld->usedAsRelay && !ld->autolink) {
 			oldlinks.push_back( ld );
-		else
+			continue;
+		}
 
 		// auto-link time exceeded?
-		if ( ld->autolink && difftime( now, ld->lastuse ) > 30 )
+		if ( ld->autolink && difftime( now, ld->lastuse ) > 30 ) {
 			oldlinks.push_back( ld );
+			continue;
+		}
 
 		// keep alives missed? yes->
@@ -1562,6 +1566,21 @@
 				logging_force( "Link is stale, closing: " << ld );
 				oldlinks.push_back( ld );
+				continue;
 			}
 		}
+	}
+
+	// drop links
+	BOOST_FOREACH( const LinkDescriptor* ld, oldlinks ) {
+
+		vector<LinkID>::iterator it = std::find(
+				bootstrapLinks.begin(), bootstrapLinks.end(), ld->communicationId);
+
+		if (!ld->communicationId.isUnspecified() && it != bootstrapLinks.end() ){
+			logging_force( "Not dropping initiator link: " << ld );
+			continue;
+		}
+		logging_force( "Link timed out. Dropping " << ld );
+		dropLink( ld->overlayId );
 	}
 
@@ -1570,18 +1589,4 @@
 	if (counter>=4) showLinkState();
 	if (counter>=4 || counter<0) counter = 0;
-
-	// drop links
-	BOOST_FOREACH( const LinkDescriptor* ld, oldlinks ) {
-
-		vector<LinkID>::iterator it = std::find(
-				bootstrapLinks.begin(), bootstrapLinks.end(), ld->communicationId);
-
-		if (!ld->communicationId.isUnspecified() && it != bootstrapLinks.end() ){
-			logging_force( "Not dropping initiator link: " << ld );
-			continue;
-		}
-		logging_force( "Link timed out. Dropping " << ld );
-		dropLink( ld->overlayId );
-	}
 }
 
Index: source/ariba/utility/messages/Message.h
===================================================================
--- source/ariba/utility/messages/Message.h	(revision 5483)
+++ source/ariba/utility/messages/Message.h	(revision 5484)
@@ -209,5 +209,4 @@
 			T* payloadMsg = new T();
 			data_deserialize( payloadMsg, payload );
-			//dropPayload();
 			return payloadMsg;
 		}
