Merge branch 'master' into IOMultiplexer
[NeonServV5.git] / src / signal.c
index cf6934269403b22d4820c8746352d38578d17999..175f61150db18ba33863ba979eef4d3953be9eef 100644 (file)
@@ -1,4 +1,4 @@
-/* signal.c - NeonServ v5.4
+/* signal.c - NeonServ v5.5
  * 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();
@@ -85,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");