diff options
author | James Booth <boothj5@gmail.com> | 2017-01-22 18:08:29 +0000 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2017-01-22 18:09:04 +0000 |
commit | 83385cdbc0106c5aae61d87975a2e082abdbf634 (patch) | |
tree | 6445a23a717d34b474efbc46267c04134fda54a5 /src/plugins/plugins.c | |
parent | 7090f85d853b32ac6799bdc5641cd81502ff65dc (diff) | |
download | profani-tty-83385cdbc0106c5aae61d87975a2e082abdbf634.tar.gz |
Add pre chat and room message blocking
Diffstat (limited to 'src/plugins/plugins.c')
-rw-r--r-- | src/plugins/plugins.c | 52 |
1 files changed, 37 insertions, 15 deletions
diff --git a/src/plugins/plugins.c b/src/plugins/plugins.c index 054cb8e1..f190a8d0 100644 --- a/src/plugins/plugins.c +++ b/src/plugins/plugins.c @@ -413,11 +413,18 @@ plugins_pre_chat_message_send(const char * const barejid, const char *message) GList *curr = values; while (curr) { ProfPlugin *plugin = curr->data; - new_message = plugin->pre_chat_message_send(plugin, barejid, curr_message); - if (new_message) { - free(curr_message); - curr_message = strdup(new_message); - free(new_message); + if (plugin->contains_hook(plugin, "prof_pre_chat_message_send")) { + new_message = plugin->pre_chat_message_send(plugin, barejid, curr_message); + if (new_message) { + free(curr_message); + curr_message = strdup(new_message); + free(new_message); + } else { + free(curr_message); + g_list_free(values); + + return NULL; + } } curr = g_list_next(curr); } @@ -485,11 +492,18 @@ plugins_pre_room_message_send(const char * const barejid, const char *message) GList *curr = values; while (curr) { ProfPlugin *plugin = curr->data; - new_message = plugin->pre_room_message_send(plugin, barejid, curr_message); - if (new_message) { - free(curr_message); - curr_message = strdup(new_message); - free(new_message); + if (plugin->contains_hook(plugin, "prof_pre_room_message_send")) { + new_message = plugin->pre_room_message_send(plugin, barejid, curr_message); + if (new_message) { + free(curr_message); + curr_message = strdup(new_message); + free(new_message); + } else { + free(curr_message); + g_list_free(values); + + return NULL; + } } curr = g_list_next(curr); } @@ -587,11 +601,19 @@ plugins_pre_priv_message_send(const char * const fulljid, const char * const mes GList *curr = values; while (curr) { ProfPlugin *plugin = curr->data; - new_message = plugin->pre_priv_message_send(plugin, jidp->barejid, jidp->resourcepart, curr_message); - if (new_message) { - free(curr_message); - curr_message = strdup(new_message); - free(new_message); + if (plugin->contains_hook(plugin, "prof_pre_priv_message_send")) { + new_message = plugin->pre_priv_message_send(plugin, jidp->barejid, jidp->resourcepart, curr_message); + if (new_message) { + free(curr_message); + curr_message = strdup(new_message); + free(new_message); + } else { + free(curr_message); + g_list_free(values); + jid_destroy(jidp); + + return NULL; + } } curr = g_list_next(curr); } |