From 5bd58dff0353ead68885278f59189c35431859ac Mon Sep 17 00:00:00 2001 From: Thulinma Date: Wed, 2 Mar 2022 15:04:51 +0100 Subject: [PATCH] Added ATHEIST environment variable to disable angel process in Controller --- src/controller/controller.cpp | 37 ++++++++++++++++++----------------- src/input/input.cpp | 4 ++-- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/controller/controller.cpp b/src/controller/controller.cpp index 972c7ed7..8350b14d 100644 --- a/src/controller/controller.cpp +++ b/src/controller/controller.cpp @@ -124,8 +124,26 @@ static unsigned long mix(unsigned long a, unsigned long b, unsigned long c){ return c; } +void handleUSR1(int signum, siginfo_t *sigInfo, void *ignore){ + Controller::Log("CONF", "USR1 received - restarting controller"); + Util::Config::is_restarting = true; + raise(SIGINT); // trigger restart +} + +void handleUSR1Parent(int signum, siginfo_t *sigInfo, void *ignore){ + Controller::Log("CONF", "USR1 received - passing on to child"); + Util::Config::is_restarting = true; +} + ///\brief The main loop for the controller. int main_loop(int argc, char **argv){ + { + struct sigaction new_action; + new_action.sa_sigaction = handleUSR1; + sigemptyset(&new_action.sa_mask); + new_action.sa_flags = 0; + sigaction(SIGUSR1, &new_action, NULL); + } Controller::isTerminal = Controller::isColorized = isatty(fileno(stdout)); if (!isatty(fileno(stdin))){Controller::isTerminal = false;} Controller::Storage = JSON::fromFile("config.json"); @@ -621,17 +639,6 @@ int main_loop(int argc, char **argv){ return 0; } -void handleUSR1(int signum, siginfo_t *sigInfo, void *ignore){ - Controller::Log("CONF", "USR1 received - restarting controller"); - Util::Config::is_restarting = true; - raise(SIGINT); // trigger restart -} - -void handleUSR1Parent(int signum, siginfo_t *sigInfo, void *ignore){ - Controller::Log("CONF", "USR1 received - passing on to child"); - Util::Config::is_restarting = true; -} - ///\brief The controller angel process. /// Starts a forked main_loop in a loop. Yes, you read that right. int main(int argc, char **argv){ @@ -646,19 +653,13 @@ int main(int argc, char **argv){ Controller::conf = Util::Config(argv[0]); Controller::conf.activate(); + if (getenv("ATHEIST")){return main_loop(argc, argv);} uint64_t reTimer = 0; while (Controller::conf.is_active){ Util::Procs::fork_prepare(); pid_t pid = fork(); if (pid == 0){ Util::Procs::fork_complete(); - { - struct sigaction new_action; - new_action.sa_sigaction = handleUSR1; - sigemptyset(&new_action.sa_mask); - new_action.sa_flags = 0; - sigaction(SIGUSR1, &new_action, NULL); - } return main_loop(argc, argv); } Util::Procs::fork_complete(); diff --git a/src/input/input.cpp b/src/input/input.cpp index 338ca22c..9d1e66fd 100644 --- a/src/input/input.cpp +++ b/src/input/input.cpp @@ -375,8 +375,8 @@ namespace Mist{ config->activate(); - if (getenv("NOFORK")){ - INFO_MSG("Not using angel process due to NOFORK environment variable"); + if (getenv("NOFORK") || getenv("ATHEIST")){ + INFO_MSG("Not using angel process due to ATHEIST environment variable"); if (playerLock){ // Re-init streamStatus, previously closed char pageName[NAME_BUFFER_SIZE];