Index: trunk/BNC/src/bnccore.h
===================================================================
--- trunk/BNC/src/bnccore.h	(revision 10461)
+++ trunk/BNC/src/bnccore.h	(revision 10465)
@@ -52,5 +52,5 @@
   void              setPortCorr(int port);
   void              setCaster(bncCaster* caster) {_caster = caster;}
-  const bncCaster*  caster() const {return _caster;}
+  bncCaster*        caster() {return _caster;}
   bool              dateAndTimeGPSSet() const;
   QDateTime         dateAndTimeGPS() const;
Index: trunk/BNC/src/bncmain.cpp
===================================================================
--- trunk/BNC/src/bncmain.cpp	(revision 10461)
+++ trunk/BNC/src/bncmain.cpp	(revision 10465)
@@ -64,5 +64,5 @@
 
 void catch_SIGINT(int) {
-  cout << "Program Interrupted by Ctrl-C" << endl;
+  cout << "BNC Interrupted by Ctrl-C" << endl;
   BNC_CORE->sigintReceived = 1;
   BNC_CORE->stopPPP();
@@ -76,6 +76,22 @@
 }
 
-void catch_SIGPIPE(int signum) {
-  cout << "Caught signal SIGPIPE " << signum << endl;
+void catch_SIGTERM(int) {
+  cout << "BNC Terminated" << endl;
+  BNC_CORE->sigintReceived = 1;
+  BNC_CORE->stopPPP();
+  BNC_CORE->stopCombination();
+#ifndef WIN32
+  sleep(2);
+#else
+  Sleep(2000);
+#endif
+  ::exit(0);
+}
+
+void catch_SIGHUP(int) {
+  cout << "BNC received SIGHUP signal: reload configuration" << endl;
+  bncSettings settings;
+  settings.reRead();
+  BNC_CORE->caster()->readMountPoints();
 }
 
@@ -449,11 +465,5 @@
   }
 
-
-
-#ifndef WIN32
-  signal(SIGPIPE, catch_SIGPIPE);
-#endif
-
-    // Interactive Mode - open the main window
+  // Interactive Mode - open the main window
   // -----------------------------------------
   if (interactive) {
@@ -512,4 +522,6 @@
 
     signal(SIGINT, catch_SIGINT);
+    signal(SIGTERM, catch_SIGTERM);
+    signal(SIGHUP, catch_SIGHUP);
 
     BNC_CORE->sigintReceived = 0;
@@ -552,4 +564,5 @@
       caster->addGetThread(getThread, true);
     }
+
   }
 
