volatile bool caught_sig_usr1 = false;
volatile bool caught_sig_usr2 = false;
volatile bool caught_sig_rtmin = false;
+volatile bool caught_sig_rtmax = false;
volatile bool caught_sig_term = false;
/**
/**
- * Signal SIGHUP caught (reload config)
+ * Signal SIGHUP caught (reload config and reset log level)
* @param param Parameter from the signal interface.
*/
void sighup_func(int param)
/**
+ * Signal SIGRTMAX caught (increase log level)
+ * @param param Parameter from the signal interface.
+ */
+void sigrtmax_func(int param)
+{
+ caught_sig_rtmax = true;
+} /*lint !e715 */
+
+
+/**
* Initialize the signals we handle.
* @return 0 if all is fine, -1 on error.
*/
updater->get_logger()->print_error_setting_signal("SIGRTMIN");
return -1;
}
+ ret_val = signal(SIGRTMAX, sigrtmax_func);
+ if ( ret_val == SIG_ERR )
+ {
+ updater->get_logger()->print_error_setting_signal("SIGRTMAX");
+ return -1;
+ }
return 0;
}
// Tell the world we are running
updater->get_logger()->print_started();
+ int original_log_level = updater->get_logger()->get_loglevel();
+
// service processing starts here
do
{
// Go online - with webcheck
is_online = true;
webcheck_enabled = true;
+ } else if (caught_sig_rtmax)
+ {
+ caught_sig_rtmax = false;
+
+ // Increase log level
+ int new_loglevel = updater->get_logger()->get_loglevel() + 1;
+ updater->get_logger()->print_caught_sigrtmax(new_loglevel);
+ updater->get_logger()->set_loglevel(new_loglevel);
} else if (caught_sig_term)
{
caught_sig_term = false;
updater->get_logger()->print_conf_reload_failed_exit();
exit(-1);
}
+
+ // Reset log level to startup log level in case it got elevated by SIGRTMAX
+ updater->get_logger()->set_loglevel(original_log_level);
}
// State handling