Index: fact/Evidence/DColl.cc
===================================================================
--- fact/Evidence/DColl.cc	(revision 17910)
+++ fact/Evidence/DColl.cc	(revision 17915)
@@ -45,5 +45,6 @@
 	float DataSizeMB, LogSizeMB;
 	int DataSizeLastUpdate, LogSizeLastUpdate;
-    DimService *LogSizeService, *DataSizeService, *DataFilename;
+    DimService *LogSizeService, *DataSizeService, *DataFilename, *SubscriptionService;
+
 	int TimeForNextFile;
 
@@ -113,5 +114,8 @@
   LogCommand = new DimCommand("DColl/Log", (char *) "C", this);
 
-  // Subsribe to top-level server list (not via AddService() due to thread issue)
+  // Create services for information about subscribed services
+  SubscriptionService = new DimService(SERVER_NAME "/Subscriptions", "C", NULL, 0);
+
+  // Subscribe to top-level server list (not via AddService() due to thread issue)
   ServerList = new DimInfo((char *) "DIS_DNS/SERVER_LIST", NO_LINK, this);
 }
@@ -132,4 +136,5 @@
   delete LogSizeService;
   delete DataSizeService;
+  delete SubscriptionService;
 
   // Close files
@@ -151,4 +156,6 @@
 // no mutex is needed to serialize writing to the file
 void DataHandler::infoHandler() {
+
+  static string SubscriptionList;
 
   // Check if service available
@@ -192,4 +199,13 @@
 	  Name = strtok(NULL, "|");
 	}
+	
+	// Update service subscription list
+	stringstream Stream;
+	
+	for (unsigned int i=0; i<List.size(); i++) Stream << List[i].DataItem->getName() << '|';
+
+	SubscriptionList = Stream.str();
+	SubscriptionService->updateService((void *) SubscriptionList.c_str(), SubscriptionList.size()+1); // Note that Subscription is a static variable
+
 	return;
   }
Index: fact/Evidence/History.cc
===================================================================
--- fact/Evidence/History.cc	(revision 17910)
+++ fact/Evidence/History.cc	(revision 17915)
@@ -29,9 +29,4 @@
 using namespace std;
 
-const int MIN_SIZE_KB = 50;					// Min and max buffersize in kByte (> 3*sizeof(int) !)
-const string DEFAULT_MAX_SIZE_KB = "2000";
-const string DEFAULT_NUM_ENTRIES = "1000";		// Number of entries in each history buffer
-const double MIN_SAVE_PERDIOD = 0.5;			// Minimum period between saving history buffers in hours
-
 //
 // Class declaration
@@ -39,4 +34,8 @@
 class History:	public DimRpc, public DimClient, public EvidenceServer {
 
+	static const int MIN_SIZE_KB = 50;					// Min and max buffersize in kByte (> 3*sizeof(int) !)
+	static const string DEFAULT_MAX_SIZE_KB;
+	static const string DEFAULT_NUM_ENTRIES;				// Number of entries in each history buffer
+ 
 	struct Item {
 	  DimStampedInfo *DataItem;
@@ -52,5 +51,5 @@
 	
 	DimInfo *ServerList;
-	DimService *Service;
+	DimService *SubscriptionService;
 	char *Directory;
 
@@ -68,4 +67,9 @@
 }; 
 
+// Initialize non-integral constants (cannot be inside class declaration)
+const string History::DEFAULT_MAX_SIZE_KB = "2000";
+const string History::DEFAULT_NUM_ENTRIES = "1000";
+static const double MIN_SAVE_PERIOD = 0.5;			// Minimum period between saving history buffers in hours
+
 
 // Constructor
@@ -73,4 +77,5 @@
 							 EvidenceServer(SERVER_NAME),
 							 Directory(Dir) {
+
   // Get/initialize configuration
   GetConfig("minchange", " ");
@@ -81,5 +86,5 @@
 
   // Create services for information about subscribed services
-  Service = new DimService(SERVER_NAME "/Subscriptions", "C", NULL, 0);
+  SubscriptionService = new DimService(SERVER_NAME "/Subscriptions", "C", NULL, 0);
 
   // Subscribe to top-level server list
@@ -94,5 +99,5 @@
   while (Map.size() != 0) RemoveService((*Map.begin()).first);
   
-  delete Service;
+  delete SubscriptionService;
 }
 
@@ -147,5 +152,5 @@
 	
 	// Update service subscription list
-	static stringstream Stream;
+	stringstream Stream;
 	
 	for (map<string, struct Item>::const_iterator i=Map.begin(); i!=Map.end(); i++) {
@@ -153,5 +158,5 @@
 	}
 	List = Stream.str();
-	Service->updateService((void *) List.c_str(), List.size()+1);
+	SubscriptionService->updateService((void *) List.c_str(), List.size()+1); // Note that List is a static variable
 	
 	return;
@@ -166,5 +171,5 @@
 
   // Save history buffers periodically (in case of program crash)
-  if (time(NULL)-Map[Service].LastSave > max(atof(GetConfig("saveperiod").c_str()),MIN_SAVE_PERDIOD)*3600) {
+  if (time(NULL)-Map[Service].LastSave > max(atof(GetConfig("saveperiod").c_str()), MIN_SAVE_PERIOD)*3600) {
     Map[Service].LastSave = time(NULL);
 	SaveHistory(Service);
