using namespace std;
Updater::Ptr updater;
-volatile bool need_config_reload = false;
volatile bool exit_now = false;
-
-volatile bool caught_sig_term = false;
+volatile bool caught_sig_hup = false;
volatile bool caught_sig_usr1 = false;
volatile bool caught_sig_usr2 = false;
-volatile bool caught_sig_rtmin1 = false;
+volatile bool caught_sig_rtmin = false;
+volatile bool caught_sig_term = false;
/**
* Checks if a bpdyndnsd process is already running.
/**
- * Signal SIGTERM caught, releasing resources and exit.
+ * Signal SIGTERM caught (exit program)
* @param param Parameter from the signal interface.
*/
-void terminate(int param)
+void sigterm_func(int param)
{
caught_sig_term = true;
} /*lint !e715 */
/**
- * Signal SIGUSR1 caught, switching to offline mode.
+ * Signal SIGUSR1 caught (switch to offline mode)
* @param param Parameter from the signal interface.
*/
-void switch_to_offline(int param)
+void sigusr1_func(int param)
{
caught_sig_usr1 = true;
} /*lint !e715 */
/**
- * Signal SIGHUP caught, reloading config.
+ * Signal SIGHUP caught (reload config)
* @param param Parameter from the signal interface.
*/
-void reload_config(int param)
+void sighup_func(int param)
{
- need_config_reload = true;
+ caught_sig_hup = true;
} /*lint !e715 */
/**
- * Signal SIGUSR2 caught, switching to online mode.
+ * Signal SIGUSR2 caught (switch to online mode)
* @param param Parameter from the signal interface.
*/
-void switch_to_online(int param)
+void sigusr2_func(int param)
{
caught_sig_usr2 = true;
} /*lint !e715 */
/**
- * Signal SIGRTMIN caught, switching to online mode with webcheck enabled.
+ * Signal SIGRTMIN caught (switch to online mode with webcheck enabled)
* @param param Parameter from the signal interface.
*/
-void switch_to_online_webcheck(int param)
+void sigrtmin_func(int param)
{
- caught_sig_rtmin1 = true;
+ caught_sig_rtmin = true;
} /*lint !e715 */
int init_signals()
{
sighandler_t ret_val;
- ret_val = signal(SIGTERM,terminate);
+ ret_val = signal(SIGTERM, sigterm_func);
if ( ret_val == SIG_ERR )
{
updater->get_logger()->print_error_setting_signal("SIGTERM");
return -1;
}
- ret_val = signal(SIGUSR1,switch_to_offline);
+ ret_val = signal(SIGUSR1, sigusr1_func);
if ( ret_val == SIG_ERR )
{
updater->get_logger()->print_error_setting_signal("SIGUSR1");
return -1;
}
- ret_val = signal(SIGHUP,reload_config);
+ ret_val = signal(SIGHUP, sighup_func);
if ( ret_val == SIG_ERR )
{
updater->get_logger()->print_error_setting_signal("SIGHUP");
return -1;
}
- ret_val = signal(SIGUSR2,switch_to_online);
+ ret_val = signal(SIGUSR2, sigusr2_func);
if ( ret_val == SIG_ERR )
{
updater->get_logger()->print_error_setting_signal("SIGUSR2");
return -1;
}
- ret_val = signal(SIGRTMIN,switch_to_online_webcheck);
+ ret_val = signal(SIGRTMIN, sigrtmin_func);
if ( ret_val == SIG_ERR )
{
updater->get_logger()->print_error_setting_signal("SIGRTMIN");
// Go online
is_online = true;
webcheck_enabled = false;
- } else if (caught_sig_rtmin1)
+ } else if (caught_sig_rtmin)
{
- caught_sig_rtmin1 = false;
+ caught_sig_rtmin = false;
updater->get_logger()->print_caught_sigrtmin();
// Go online - with webcheck
webcheck_enabled = true;
} else if (caught_sig_term)
{
- caught_sig_term = true;
+ caught_sig_term = false;
updater->get_logger()->print_caught_sigterm();
exit_now = true;
+ } else if (caught_sig_hup)
+ {
+ caught_sig_hup = false;
+ updater->get_logger()->print_caught_sighup();
+
+ if ( updater->reload_config() != 0 )
+ {
+ updater->get_logger()->print_conf_reload_failed_exit();
+ exit(-1);
+ }
}
// State handling
updater->get_logger()->print_offline_mode();
}
- if (need_config_reload)
- {
- updater->get_logger()->print_caught_sighup();
- need_config_reload = false;
-
- if ( updater->reload_config() != 0 )
- {
- updater->get_logger()->print_conf_reload_failed_exit();
- exit(-1);
- }
- }
-
// Snore, snore... don't hog the cpu if we are in daemon_mode.
if ( !exit_now )
sleep(10); /*lint !e534 */