Index: source/ariba/overlay/modules/OverlayInterface.h
===================================================================
--- source/ariba/overlay/modules/OverlayInterface.h	(revision 3057)
+++ source/ariba/overlay/modules/OverlayInterface.h	(revision 3067)
@@ -58,4 +58,5 @@
 
 class OverlayInterface : public CommunicationListener {
+	friend class BaseOverlay;
 public:
 	OverlayInterface(
Index: source/ariba/overlay/modules/onehop/OneHop.cpp
===================================================================
--- source/ariba/overlay/modules/onehop/OneHop.cpp	(revision 3057)
+++ source/ariba/overlay/modules/onehop/OneHop.cpp	(revision 3067)
@@ -146,4 +146,11 @@
 	logging_info( "leaving onehop overlay structure" );
 
+	// set the state to invalid, this will prevent from
+	// handling onLinkDown events, as we are traversing the
+	// overlayNodes map and the onLinkDown function is called
+	// from the BaseOverlay and OneHop::onLinkDown will also
+	// try to access the overlayNodes structure.
+	state = OneHopStateInvalid;
+
 	//
 	// close all links, this will indicate the other nodes that we left
@@ -158,5 +165,4 @@
 	}
 
-	state = OneHopStateInvalid;
 	pendingLinks = 0;
 }
@@ -164,4 +170,8 @@
 
 void OneHop::onLinkDown(const LinkID& lnk, const NodeID& remote){
+
+	// don't handle when we are in state-invalid,
+	// see comment in OneHop::leaveOverlay
+	if( state == OneHopStateInvalid ) return;
 
 	//
