-/* signal.c - NeonServ v5.3
+/* signal.c - NeonServ v5.4
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
static void sigexit();
void sighandler(int signum) {
- putlog(LOGLEVEL_INFO, "Received Signal %d", signum);
+ putlog(LOGLEVEL_INFO, "Received Signal %d\n", signum);
signal(signum, SIG_DFL);
switch(signum) {
case SIGABRT:
sigcrash(signum);
break;
}
+ #ifdef WIN32
+ exit(signum);
+ #else
kill(getpid(), signum);
+ #endif
}
static void sigcrash(int signum) {
signame = "SIGUNKNOWN";
break;
}
- putlog(LOGLEVEL_ERROR, "NeonServ process crashed (%s)", signame);
+ putlog(LOGLEVEL_ERROR, "NeonServ process crashed (%s)\n", signame);
#ifndef WIN32
char gcore[50];
sprintf(gcore, "gcore %u", getpid());
system(gcore); //generate core file
coregen = "core file generated.";
- putlog(LOGLEVEL_ERROR | LOGLEVEL_INFO, "generated core file.");
+ putlog(LOGLEVEL_ERROR | LOGLEVEL_INFO, "generated core file.\n");
#endif
char *alertchan = get_string_field("General.alertchan");
if(alertchan) {
bot->flags &= SOCKET_FLAG_CONNECTED;
}
}
- putlog(LOGLEVEL_INFO, "hard shutdown...");
+ putlog(LOGLEVEL_INFO, "hard shutdown...\n");
exit_daemon();
- sleep(1);
+ usleep(1000000);
//hard restart
restart_process();
}