X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fsignal.c;h=24e399d6490ade57b73a94ac9573944e6ce7b3a7;hb=4812835346f724fcea86e78f741cc6c72c86b676;hp=1eb2383e8982069f2955e1f705abc47c9743cf0c;hpb=7d9422966272d2d0998280521a8347d42bd8e1cb;p=NeonServV5.git diff --git a/src/signal.c b/src/signal.c index 1eb2383..24e399d 100644 --- a/src/signal.c +++ b/src/signal.c @@ -1,4 +1,4 @@ -/* signal.c - NeonServ v5.4 +/* signal.c - NeonServ v5.6 * Copyright (C) 2011-2012 Philipp Kreil (pk910) * * This program is free software: you can redistribute it and/or modify @@ -18,6 +18,7 @@ #include "bots.h" #include "ChanNode.h" #include "ClientSocket.h" +#include "IOHandler.h" #include "ConfigParser.h" static void sigcrash(); @@ -48,7 +49,8 @@ void sighandler(int signum) { } static void sigcrash(int signum) { - char *coregen = ""; + char coregen[MAXLEN]; + coregen[0] = 0; char *signame; switch(signum) { case SIGSEGV: @@ -68,8 +70,8 @@ static void sigcrash(int signum) { #ifndef WIN32 char gcore[50]; sprintf(gcore, "gcore %u", getpid()); - system(gcore); //generate core file - coregen = "core file generated."; + int sysretn = system(gcore); //generate core file + sprintf(coregen, "core file generated. (%d)", sysretn); putlog(LOGLEVEL_ERROR | LOGLEVEL_INFO, "generated core file.\n"); #endif char *alertchan = get_string_field("General.alertchan"); @@ -84,8 +86,9 @@ static void sigcrash(int signum) { struct ClientSocket *bot; for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) { if((bot->flags & SOCKET_FLAG_CONNECTED)) { - close(bot->sock); - bot->flags &= SOCKET_FLAG_CONNECTED; + iohandler_close(bot->iofd); + bot->flags &= ~(SOCKET_FLAG_CONNECTED | SOCKET_FLAG_READY); + bot->iofd = NULL; } } putlog(LOGLEVEL_INFO, "hard shutdown...\n");