+ if (RUNNING_ON_VALGRIND) {
+ /* We've already manually called _fini for each of the modules. Make sure
+ * it's not getting called again when the libraries are unloaded. */
+ _exit(0);
+ }
+
+ return 0;
+}
+
+void handlesignals(void) {
+ if (newserv_sigusr1_pending) {
+ signal(SIGUSR1, sigusr1handler);
+ Error("core", ERR_INFO, "SIGUSR1 received.");
+ triggerhook(HOOK_CORE_SIGUSR1, NULL);
+ newserv_sigusr1_pending=0;
+ }
+
+ if (newserv_sighup_pending) {
+ signal(SIGHUP, sighuphandler);
+ Error("core", ERR_INFO, "SIGHUP received, rehashing...");
+ triggerhook(HOOK_CORE_REHASH, (void *)1);
+ newserv_sighup_pending=0;
+ }
+
+ if (newserv_sigint_pending) {
+ Error("core", ERR_INFO, "SIGINT received, terminating.");
+ triggerhook(HOOK_CORE_SIGINT, NULL);
+ newserv_sigint_pending=0;
+ newserv_shutdown_pending=1;
+ }