changeset 1797:246c5d359c97

Add "hook-pre-message-in" hook
author Mikael Berthe <mikael@lilotux.net>
date Sat, 20 Mar 2010 14:57:03 +0100
parents 5e2db25fdb17
children 21f02b1dee91
files mcabber/mcabber/hooks.c mcabber/mcabber/hooks.h
diffstat 2 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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
 
--- 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 <glib.h>
 
 // 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"