From ef9530c3f82e7c116bb141b6f710ba2d54687ec4 Mon Sep 17 00:00:00 2001 From: pk910 Date: Fri, 7 Sep 2012 12:09:12 +0200 Subject: [PATCH] added free-client event --- src/ClientSocket.c | 1 + src/IRCEvents.c | 7 ++++++- src/IRCEvents.h | 7 +++++++ src/modules.c | 5 ++++- src/modules/module.h | 2 ++ src/version.h | 2 +- 6 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/ClientSocket.c b/src/ClientSocket.c index 3c05457..cca4bcd 100644 --- a/src/ClientSocket.c +++ b/src/ClientSocket.c @@ -136,6 +136,7 @@ int destroy_socket(struct ClientSocket *client) { } else last_sock = sock; } + event_freeclient(client); free(client->host); if(client->bind) free(client->bind); diff --git a/src/IRCEvents.c b/src/IRCEvents.c index fc5053f..83428c9 100644 --- a/src/IRCEvents.c +++ b/src/IRCEvents.c @@ -49,8 +49,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) @@ -229,3 +230,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 ClientNode *client), (client)) diff --git a/src/IRCEvents.h b/src/IRCEvents.h index feabf57..f78ed91 100644 --- a/src/IRCEvents.h +++ b/src/IRCEvents.h @@ -163,4 +163,11 @@ typedef int reload_func_t(int initialization); int event_reload(int initialization); #endif +typedef void freeclient_func_t(struct ClientNode *client); +#ifndef DND_FUNCTIONS +/* MODULAR ACCESSIBLE */ int bind_freeclient(freeclient_func_t *func, int module_id); +/* MODULAR ACCESSIBLE */ void unbind_freeclient(freeclient_func_t *func); +int event_freeclient(struct ClientNode *chan); +#endif + #endif diff --git a/src/modules.c b/src/modules.c index 3193c62..0de4505 100644 --- a/src/modules.c +++ b/src/modules.c @@ -49,6 +49,7 @@ /* 191-193 */ #include "ModuleFunctions.h" /* 194 */ /* bots.h */ /* 195-196 */ /* version.h */ +/* 197-198 */ /* IRCEvents.h */ #define Function void * @@ -260,7 +261,9 @@ void *global_functions[] = { /* 193 */ (Function) module_neonbackup_recover_chan, /* 194 */ (Function) requestInvite, /* 195 */ (Function) is_stable_revision, -/* 196 */ (Function) get_dev_revision +/* 196 */ (Function) get_dev_revision, +/* 197 */ (Function) bind_freeclient, +/* 198 */ (Function) unbind_freeclient }; static int module_id_counter = 1; diff --git a/src/modules/module.h b/src/modules/module.h index 447daed..071c148 100644 --- a/src/modules/module.h +++ b/src/modules/module.h @@ -226,6 +226,8 @@ extern int module_id; /* 194 */ #define requestInvite ((void (*)(struct UserNode *, struct ChanNode *))global[194]) /* 195 */ #define is_stable_revision ((const int (*)(void))global[195]) /* 196 */ #define get_dev_revision ((const char * (*)(void))global[196]) +/* 197 */ #define bind_freeclient ((int (*)(freeclient_func_t *, int))global[197]) +/* 198 */ #define unbind_freeclient ((void (*)(freeclient_func_t *))global[198]) #define MODULE_HEADER(initfunc,startfunc,stopfunc) \ void **global = NULL; \ diff --git a/src/version.h b/src/version.h index 5455e27..ec8c207 100644 --- a/src/version.h +++ b/src/version.h @@ -19,7 +19,7 @@ #include "main.h" -#define MODULE_VERSION 6 +#define MODULE_VERSION 7 #ifndef DND_FUNCTIONS extern const char *compilation; -- 2.20.1