# HG changeset patch # User Mikael Berthe # Date 1269093423 -3600 # Node ID 246c5d359c9762d819940282074f27a633e7d491 # Parent 5e2db25fdb17db36e91df96ade474334b77c8b08 Add "hook-pre-message-in" hook diff -r 5e2db25fdb17 -r 246c5d359c97 mcabber/mcabber/hooks.c --- a/mcabber/mcabber/hooks.c Sat Mar 20 14:50:37 2010 +0100 +++ b/mcabber/mcabber/hooks.c Sat Mar 20 14:57:03 2010 +0100 @@ -232,6 +232,26 @@ wmsg = (char*) msg; } +#ifdef MODULES_ENABLE + { + guint h_result; + hk_arg_t args[] = { + { "jid", bjid }, + { "resource", resname }, + { "message", wmsg }, + { "groupchat", is_groupchat ? "true" : "false" }, + { NULL, NULL }, + }; + h_result = hk_run_handlers(HOOK_PRE_MESSAGE_IN, args); + if (h_result == HOOK_HANDLER_RESULT_NO_MORE_HOOK_DROP_DATA) { + scr_LogPrint(LPRINT_DEBUG, "Message dropped (hook result)."); + g_free(bmsg); + g_free(mmsg); + return; + } + } +#endif + // If this user isn't in the roster, we add it roster_usr = roster_find(bjid, jidsearch, 0); if (!roster_usr) { @@ -348,7 +368,6 @@ { NULL, NULL }, }; hk_run_handlers(HOOK_POST_MESSAGE_IN, args); - // TODO: check (and use) return value } #endif diff -r 5e2db25fdb17 -r 246c5d359c97 mcabber/mcabber/hooks.h --- a/mcabber/mcabber/hooks.h Sat Mar 20 14:50:37 2010 +0100 +++ b/mcabber/mcabber/hooks.h Sat Mar 20 14:57:03 2010 +0100 @@ -14,6 +14,7 @@ #include // Core hooks +#define HOOK_PRE_MESSAGE_IN "hook-pre-message-in" #define HOOK_POST_MESSAGE_IN "hook-post-message-in" #define HOOK_MESSAGE_OUT "hook-message-out" #define HOOK_STATUS_CHANGE "hook-status-change"