M louloulibs => louloulibs +1 -1
@@ 1,1 1,1 @@
-Subproject commit 89398b5d886744c3812b65195308cae57eca2b53
+Subproject commit 0f3c1183e2bf0941ae2bffd3f31577bce4f3001c
M src/main.cpp => src/main.cpp +11 -1
@@ 99,9 99,19 @@ int main(int ac, char** av)
if (hostname.empty())
return config_help("hostname");
+ // Block the signals we want to manage. They will be unblocked only during
+ // the epoll_pwait or ppoll calls. This avoids some race conditions,
+ // explained in man 2 pselect on linux
+ sigset_t mask;
+ sigemptyset(&mask);
+ sigaddset(&mask, SIGINT);
+ sigaddset(&mask, SIGTERM);
+ sigaddset(&mask, SIGUSR1);
+ sigaddset(&mask, SIGUSR2);
+ sigprocmask(SIG_BLOCK, &mask, nullptr);
+
// Install the signals used to exit the process cleanly, or reload the
// config
- sigset_t mask;
sigemptyset(&mask);
struct sigaction on_sigint;
on_sigint.sa_sigaction = &sigint_handler;