Merge branch 'development'
[NeonServV5.git] / src / IRCEvents.c
index a2b7717c7488e7cd9e9909fcd145ee34d06d47dc..2eea34d8ecc1067bddf693e2a721b6a748abeee7 100644 (file)
@@ -1,4 +1,4 @@
-/* IRCEvents.c - NeonServ v5.5
+/* IRCEvents.c - NeonServ v5.6
  * Copyright (C) 2011-2012  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
@@ -21,6 +21,7 @@
 #include "ChanUser.h"
 #include "ClientSocket.h"
 #include "mysqlConn.h"
+#include "log.h"
 
 struct binding {
     void *func;
@@ -49,8 +50,9 @@ static void **binds = NULL;
 #define BIND_TYPE_FREEUSER   17
 #define BIND_TYPE_FREECHAN   18
 #define BIND_TYPE_RELOAD     19
+#define BIND_TYPE_FREECLIENT 20
 
-#define TOTAL_BIND_TYPES     20
+#define TOTAL_BIND_TYPES     21
 
 void init_bind() {
     if(binds)
@@ -104,7 +106,7 @@ int bind_##NAME(FUNCTYPE *func, int module_id) { \
     if(!is_bound(TYPE, func)) { \
         struct binding *cbind = malloc(sizeof(*cbind)); \
         if (!cbind) { \
-            perror("malloc() failed"); \
+            printf_log("main", LOG_ERROR, "%s:%d malloc() failed", __FILE__, __LINE__); \
             return 0; \
         } \
         cbind->func = func; \
@@ -229,3 +231,7 @@ FUNC_EVENT(freechan, freechan_func_t, BIND_TYPE_FREECHAN, (struct ChanNode *chan
 FUNC_BIND(reload, reload_func_t, BIND_TYPE_RELOAD)
 FUNC_UNBIND(reload, reload_func_t, BIND_TYPE_RELOAD)
 FUNC_EVENT(reload, reload_func_t, BIND_TYPE_RELOAD, (int initialization), (initialization))
+
+FUNC_BIND(freeclient, freeclient_func_t, BIND_TYPE_FREECLIENT)
+FUNC_UNBIND(freeclient, freeclient_func_t, BIND_TYPE_FREECLIENT)
+FUNC_EVENT(freeclient, freeclient_func_t, BIND_TYPE_FREECLIENT, (struct ClientSocket *client), (client))