summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2015-06-26 21:33:32 +0200
committerHolger Weiss <holger@zedat.fu-berlin.de>2015-07-03 11:34:44 +0200
commita25051fead86574c27a024eb048eadf45186599d (patch)
tree4601245bed3db38e3a0de88f8a2602e78de39120 /src
parentLet Travis grab MySQL 5.6 from repo.mysql.com (diff)
New hook: muc_filter_packet
Add a hook that allows for modifying or dropping MUC room messages. Closes #491.
Diffstat (limited to 'src')
-rw-r--r--src/mod_muc_room.erl40
1 files changed, 26 insertions, 14 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index 7b4cfbf6..df06bce4 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -947,20 +947,32 @@ process_groupchat_message(From,
end,
case IsAllowed of
true ->
- send_multiple(
- jlib:jid_replace_resource(StateData#state.jid, FromNick),
- StateData#state.server_host,
- StateData#state.users,
- Packet),
- NewStateData2 = case has_body_or_subject(Packet) of
- true ->
- add_message_to_history(FromNick, From,
- Packet,
- NewStateData1);
- false ->
- NewStateData1
- end,
- {next_state, normal_state, NewStateData2};
+ case
+ ejabberd_hooks:run_fold(muc_filter_packet,
+ StateData#state.server_host,
+ Packet,
+ [StateData,
+ StateData#state.jid,
+ From, FromNick])
+ of
+ drop ->
+ {next_state, normal_state, StateData};
+ NewPacket ->
+ send_multiple(jlib:jid_replace_resource(StateData#state.jid,
+ FromNick),
+ StateData#state.server_host,
+ StateData#state.users,
+ Packet),
+ NewStateData2 = case has_body_or_subject(Packet) of
+ true ->
+ add_message_to_history(FromNick, From,
+ Packet,
+ NewStateData1);
+ false ->
+ NewStateData1
+ end,
+ {next_state, normal_state, NewStateData2}
+ end;
_ ->
Err = case
(StateData#state.config)#config.allow_change_subj