Index: Evidence/Config.cc
===================================================================
--- Evidence/Config.cc	(revision 186)
+++ Evidence/Config.cc	(revision 187)
@@ -36,5 +36,5 @@
     DimService *ConfigModified;
     int ModifyTime;
-	
+
     void rpcHandler();
   
@@ -45,4 +45,5 @@
 	void ConfigChanged(); 
 };
+
 
 // Constructor
Index: Evidence/Evidence.cc
===================================================================
--- Evidence/Evidence.cc	(revision 186)
+++ Evidence/Evidence.cc	(revision 187)
@@ -47,5 +47,5 @@
   signal(SIGINT, &SignalHandler);   // CTRL-C
   signal(SIGHUP, &SignalHandler);   // Terminal closed
-  
+
   // Catch C++ unhandled exceptions
   set_terminate(Terminate);
@@ -57,5 +57,5 @@
   string Rev(EVIDENCE_REVISION);
   Rev = Rev.substr(1, Rev.size()-3);
-  if (asprintf(&InitMsg, "Server started (%s, compiled %s %s)", Rev.c_str(),__DATE__, __TIME__) == -1) InitMsg = NULL;
+  snprintf(InitMsg, sizeof(InitMsg), "Server started (%s, compiled %s %s)", Rev.c_str(),__DATE__, __TIME__);
   
   Status = new DimService((ServerName+"/Status").c_str(), (char *) "C", InitMsg, strlen(InitMsg)+1);
@@ -68,5 +68,4 @@
 EvidenceServer::~EvidenceServer() {
 
-  free(InitMsg);
   State(INFO, "Server stopped");
   
@@ -79,4 +78,5 @@
 // DIM exit handler
 void EvidenceServer::exitHandler(int Code) {
+
   State(INFO, "Exit handler called (DIM exit code %d)", Code);
   exit(EXIT_SUCCESS);
@@ -181,7 +181,17 @@
 
 // Signal handler (causes pause() and other syscalls to return)
-void EvidenceServer::SignalHandler(int) {
-
-  ThisServer->ExitRequest = true;
+void EvidenceServer::SignalHandler(int Signal) {
+
+  static bool Called = false;
+
+  if (!Called) {
+	Called = true;
+	ThisServer->ExitRequest = true;
+	return;
+  }
+
+  // If invoked twice, call exit()
+  ThisServer->State(ThisServer->WARN, "Signal handler called again, invoking exit() (signal %d)", Signal);
+  exit(EXIT_FAILURE);
 }
 
Index: Evidence/Evidence.h
===================================================================
--- Evidence/Evidence.h	(revision 186)
+++ Evidence/Evidence.h	(revision 187)
@@ -20,5 +20,4 @@
 class EvidenceServer: public DimServer {
   private:
-
 	// This class will contain in LastModifyTime always
 	// the unix time of the last config file update 
@@ -51,5 +50,5 @@
 	class ConfigUpdate *ModifyInfo;
 	
-	char *InitMsg;
+	char InitMsg[STATUS_SIZE];
 	int LastModifyTime;
 
Index: Evidence/readme.txt
===================================================================
--- Evidence/readme.txt	(revision 186)
+++ Evidence/readme.txt	(revision 187)
@@ -5,6 +5,5 @@
 Config is the configuration server and needs to run before any other DIM
 server that requests configuration information is started (if a configuration
-request cannot be answered, a server will normally not start). As default,
-it reads Evidence.conf in the config subdirectory. A different configuration
+request cannot be answered, a server will normally not start). A configuration
 file can be given on the command line.
 
@@ -18,5 +17,5 @@
 
 The DIMDIR environment variable needs to point to the DIM installation directory
-when compiling. DIM_DNS_NODE must point to a name server for any DIM server
+when compiling. DIM_DNS_NODE must point to the name server for any DIM server
 to run.
 
