/** * @brief This thread is in charge of signal management * * @param[in] UnusedArg Unused * * @return NULL. */ void *sigmgr_thread(void *UnusedArg) { SetNameFunction("sigmgr"); int signal_caught = 0; /* Loop until we catch SIGTERM */ while (signal_caught != SIGTERM) { sigset_t signals_to_catch; sigemptyset(&signals_to_catch); sigaddset(&signals_to_catch, SIGTERM); sigaddset(&signals_to_catch, SIGHUP); if (sigwait(&signals_to_catch, &signal_caught) != 0) { LogFullDebug(COMPONENT_THREAD, "sigwait exited with error"); continue; } if (signal_caught == SIGHUP) { LogEvent(COMPONENT_MAIN, "SIGHUP_HANDLER: Received SIGHUP.... initiating export list reload"); admin_replace_exports(); reread_log_config(); } } LogDebug(COMPONENT_THREAD, "sigmgr thread exiting"); admin_halt(); /* Might as well exit - no need for this thread any more */ return NULL; }
static bool admin_dbus_reload(DBusMessageIter *args, DBusMessage *reply) { char *errormsg = "Exports reloaded"; bool success = true; DBusMessageIter iter; dbus_message_iter_init_append(reply, &iter); if (args != NULL) { errormsg = "Replace exports take no arguments."; LogWarn(COMPONENT_DBUS, "%s", errormsg); goto out; } admin_replace_exports(); out: dbus_status_reply(&iter, success, errormsg); return success; }