From 99e2e629063a10059ee33ed3d68fcdde61dab12e Mon Sep 17 00:00:00 2001 From: Dmitry Bogatov Date: Fri, 28 Jan 2022 17:08:22 -0400 Subject: [PATCH] laminard: ignore SIGHUP Many daemons reload config file on SIGHUP; laminar don't have config file, so signal is ignored (with informative message on stdout). Previously, default handler for SIGHUP was used that terminates process. Closes: #166 --- src/main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 2b47993..a3da6f0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -53,6 +54,13 @@ static void usage(std::ostream& out) { out << " -v enable verbose output\n"; } +static void on_sighup(int) +{ + constexpr const char msg[] = "Laminar received and ignored SIGHUP\n"; + // write(2) is safe to call inside signal handler. + write(STDERR_FILENO, msg, sizeof(msg) - 1); +} + int main(int argc, char** argv) { if(argv[0][0] == '{') return leader_main(); @@ -92,6 +100,7 @@ int main(int argc, char** argv) { signal(SIGINT, &laminar_quit); signal(SIGTERM, &laminar_quit); + signal(SIGHUP, &on_sighup); printf("laminard version %s started\n", laminar_version());