diff --git a/DStarGateway/DStarGatewayApp.cpp b/DStarGateway/DStarGatewayApp.cpp index 7ee437e..2df277b 100644 --- a/DStarGateway/DStarGatewayApp.cpp +++ b/DStarGateway/DStarGatewayApp.cpp @@ -68,8 +68,9 @@ int main(int argc, char *argv[]) signal(SIGILL, CDStarGatewayApp::sigHandlerFatal); signal(SIGFPE, CDStarGatewayApp::sigHandlerFatal); signal(SIGABRT, CDStarGatewayApp::sigHandlerFatal); - signal(SIGTERM, CDStarGatewayApp::sigHandler); - signal(SIGINT, CDStarGatewayApp::sigHandler); + signal(SIGTERM, CDStarGatewayApp::sigHandlerExit); + signal(SIGINT, CDStarGatewayApp::sigHandlerExit); + signal(SIGUSR1, CDStarGatewayApp::sigHandlerUSR); setbuf(stdout, NULL); if (2 != argc) { @@ -370,7 +371,7 @@ bool CDStarGatewayApp::createThread() return true; } -void CDStarGatewayApp::sigHandler(int sig) +void CDStarGatewayApp::sigHandlerExit(int sig) { CLog::logInfo("Caught signal : %s, shutting down gateway", strsignal(sig)); @@ -392,6 +393,15 @@ void CDStarGatewayApp::sigHandlerFatal(int sig) exit(3); } +void CDStarGatewayApp::sigHandlerUSR(int sig) +{ + if(sig == SIGUSR1) { + CLog::logInfo("Caught signal : %s, updating host files", strsignal(sig)); + + CHostsFilesManager::UpdateHostsAsync(); // call and forget + } +} + void CDStarGatewayApp::terminateHandler() { #ifdef DEBUG_DSTARGW diff --git a/DStarGateway/DStarGatewayApp.h b/DStarGateway/DStarGatewayApp.h index 6e5aa21..020a519 100644 --- a/DStarGateway/DStarGatewayApp.h +++ b/DStarGateway/DStarGatewayApp.h @@ -38,6 +38,7 @@ public: void run(); static void sigHandlerFatal(int sig); - static void sigHandler(int sig); + static void sigHandlerExit(int sig); + static void sigHandlerUSR(int sig); static void terminateHandler(); };