From 68c1562bf90b774c96847cbb9253d5c9a2982f02 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Mon, 16 Sep 2024 20:25:31 +0200 Subject: [PATCH] Update hosts files on signal USR1 #50 --- DStarGateway/DStarGatewayApp.cpp | 16 +++++++++++++--- DStarGateway/DStarGatewayApp.h | 3 ++- 2 files changed, 15 insertions(+), 4 deletions(-) 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(); };