Index: /source/ariba/overlay/OverlayBootstrap.cpp
===================================================================
--- /source/ariba/overlay/OverlayBootstrap.cpp	(revision 5953)
+++ /source/ariba/overlay/OverlayBootstrap.cpp	(revision 5967)
@@ -38,5 +38,9 @@
 
 #include "OverlayBootstrap.h"
+
 #include "BaseOverlay.h"
+#include "ariba/utility/bootstrap/modules/bluetoothsdp/BluetoothSdp.h"
+
+using ariba::utility::BluetoothSdp;
 
 namespace ariba {
@@ -51,7 +55,10 @@
 		nodeid( NodeID::UNSPECIFIED ),
 		overlay( NULL ),
-		watchtimer(this) {
+		watchtimer(this),
+		haveOverlayConnection(false){
 
 	srand(time(NULL));
+
+	BluetoothSdp::CONNECTION_CHECKER = this;
 }
 
@@ -162,4 +169,9 @@
 
 	lastJoines.push_front(data);
+}
+
+bool OverlayBootstrap::haveOverlayConnections(){
+	boost::mutex::scoped_lock lock(haveOverlayConnectionMutex);
+	return haveOverlayConnection;
 }
 
@@ -175,24 +187,13 @@
 	}
 
-	// TODO: --> SIGCOMM hack <--
-	// if we have no overlay neighbors, make sure sdp is loaded
-	// sdp searching is turned off when we have bootstrapped
-	if(overlay->getOverlayNeighbors().size() > 0){
-
-		// switch off sdp when we we _are_ in the spovnet already
-		if(manager.isModuleRegistered(BootstrapManager::BootstrapTypeBluetoothSdp))
-			manager.unregisterModule(BootstrapManager::BootstrapTypeBluetoothSdp);
-
-		return;
+	{
+		boost::mutex::scoped_lock lock(haveOverlayConnectionMutex);
+		haveOverlayConnection = overlay->getOverlayNeighbors().size() > 0;
+
+		// we have overlay neighbors -> ok nothing to do
+		if(haveOverlayConnection > 0) return;
 	}
 
-	// make sure sdp is running when we are _not_ in the spovnet
-	if(!manager.isModuleRegistered(BootstrapManager::BootstrapTypeBluetoothSdp))
-		manager.registerModule(BootstrapManager::BootstrapTypeBluetoothSdp);
-
-	//
-	// we have overlay neighbors -> ok
-	//
-
+	// no overlay neighbors, see if we can join using old information
 	logging_info("overlay not joined, checking for earlier used bootstrap information");
 	EndpointDescriptor joinep = EndpointDescriptor::UNSPECIFIED();
Index: /source/ariba/overlay/OverlayBootstrap.h
===================================================================
--- /source/ariba/overlay/OverlayBootstrap.h	(revision 5953)
+++ /source/ariba/overlay/OverlayBootstrap.h	(revision 5967)
@@ -90,4 +90,5 @@
 
 	void recordJoin(const EndpointDescriptor& _ep);
+	bool haveOverlayConnections();
 
 protected:
@@ -134,4 +135,8 @@
 	WatchdogTimer watchtimer;
 	void checkOverlayStatus();
+
+
+	bool haveOverlayConnection;
+	boost::mutex haveOverlayConnectionMutex;
 };
 
Index: /source/ariba/utility/bootstrap/modules/bluetoothsdp/BluetoothSdp.cpp
===================================================================
--- /source/ariba/utility/bootstrap/modules/bluetoothsdp/BluetoothSdp.cpp	(revision 5953)
+++ /source/ariba/utility/bootstrap/modules/bluetoothsdp/BluetoothSdp.cpp	(revision 5967)
@@ -38,4 +38,5 @@
 
 #include "BluetoothSdp.h"
+#include "ariba/overlay/OverlayBootstrap.h"
 
 #ifdef HAVE_BLUETOOTH_BLUETOOTH_H
@@ -62,5 +63,7 @@
 namespace ariba {
 namespace utility {
+
 use_logging_cpp(BluetoothSdp);
+OverlayBootstrap* BluetoothSdp::CONNECTION_CHECKER = NULL;
 
 BluetoothSdp::BluetoothSdp(BootstrapInformationCallback* _callback) :
@@ -258,5 +261,5 @@
 	//
 
-	//if(!haveConnections()){
+	if(!haveConnections()){
 
 		/*
@@ -304,9 +307,9 @@
 		close(sock);
 
-	//} else {
-		//logging_debug("have active rfcomm connections, not searching");
-	//}
-
-	int nextscan = (rand() % 5) + 3;
+	} else {
+		logging_debug("have active connections, no sdp searching");
+	}
+
+	int nextscan = (rand() % 10) + 5;
 	logging_debug("next sdp scan try in " << nextscan << " seconds");
 
@@ -419,4 +422,11 @@
 bool BluetoothSdp::haveConnections(){
 
+	// TODO: currently we check for overlay connectivity
+
+	if(CONNECTION_CHECKER == NULL) return false;
+	return CONNECTION_CHECKER->haveOverlayConnections();
+
+
+	/* TODO: this will check for rfcomm connections
 	struct hci_conn_list_req* cl = NULL;
 	struct hci_conn_info* ci = NULL;
@@ -445,4 +455,5 @@
 
 	return haveconn;
+	*/
 }
 
Index: /source/ariba/utility/bootstrap/modules/bluetoothsdp/BluetoothSdp.h
===================================================================
--- /source/ariba/utility/bootstrap/modules/bluetoothsdp/BluetoothSdp.h	(revision 5953)
+++ /source/ariba/utility/bootstrap/modules/bluetoothsdp/BluetoothSdp.h	(revision 5967)
@@ -65,4 +65,12 @@
 
 namespace ariba {
+  namespace overlay {
+    class OverlayBootstrap;
+  }
+}
+
+using ariba::overlay::OverlayBootstrap;
+
+namespace ariba {
 namespace utility {
 
@@ -70,4 +78,6 @@
 	use_logging_h(BluetoothSdp);
 public:
+	static OverlayBootstrap* CONNECTION_CHECKER;
+
 	BluetoothSdp(BootstrapInformationCallback* _callback);
 	virtual ~BluetoothSdp();
Index: /source/ariba/utility/system/StartupWrapper.cpp
===================================================================
--- /source/ariba/utility/system/StartupWrapper.cpp	(revision 5953)
+++ /source/ariba/utility/system/StartupWrapper.cpp	(revision 5967)
@@ -104,21 +104,25 @@
 	// set up again an individual level if you like
 	
-	{
+	/*{
 		log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("MCPO"));
 		logger->setLevel(log4cxx::Level::getDebug());
 	}
+	{
+		log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("BaseCommunication"));
+		logger->setLevel(log4cxx::Level::getDebug());
+	}*/
+	{
+		log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("OverlayBootstrap"));
+		logger->setLevel(log4cxx::Level::getDebug());
+	}
+	{
+		log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("BootstrapManager"));
+		logger->setLevel(log4cxx::Level::getDebug());
+	}
+	{
+		log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("BluetoothSdp"));
+		logger->setLevel(log4cxx::Level::getDebug());
+	}
 	/*{
-		log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("BaseCommunication"));
-		logger->setLevel(log4cxx::Level::getDebug());
-	}
-	{
-		log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("OverlayBootstrap"));
-		logger->setLevel(log4cxx::Level::getDebug());
-	}
-	{
-			log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("BootstrapManager"));
-			logger->setLevel(log4cxx::Level::getDebug());
-	}
-	{
 			log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("Chord"));
 			logger->setLevel(log4cxx::Level::getInfo());
