Index: source/ariba/utility/bootstrap/modules/periodicbroadcast/PeriodicBroadcast.cpp
===================================================================
--- source/ariba/utility/bootstrap/modules/periodicbroadcast/PeriodicBroadcast.cpp	(revision 4921)
+++ source/ariba/utility/bootstrap/modules/periodicbroadcast/PeriodicBroadcast.cpp	(revision 4924)
@@ -67,9 +67,17 @@
 	server(io_service, &newRemoteServices, &newRemoteServicesMutex) {
 
-	io_service.run();
+	io_service_thread = new boost::thread(
+		boost::bind(&PeriodicBroadcast::threadFunc, this) );
 }
 
 PeriodicBroadcast::~PeriodicBroadcast(){
 	io_service.stop();
+	io_service_thread->join();
+	delete io_service_thread;
+	io_service_thread = NULL;
+}
+
+void PeriodicBroadcast::threadFunc(PeriodicBroadcast* obj){
+	obj->io_service.run();
 }
 
Index: source/ariba/utility/bootstrap/modules/periodicbroadcast/PeriodicBroadcast.h
===================================================================
--- source/ariba/utility/bootstrap/modules/periodicbroadcast/PeriodicBroadcast.h	(revision 4921)
+++ source/ariba/utility/bootstrap/modules/periodicbroadcast/PeriodicBroadcast.h	(revision 4924)
@@ -113,4 +113,6 @@
 
 	boost::asio::io_service io_service;
+	boost::thread* io_service_thread;
+	static void threadFunc(PeriodicBroadcast* obj);
 
 	class udp_server {
