summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeny Khramtsov <xramtsov@gmail.com>2015-07-21 12:35:27 +0300
committerEvgeny Khramtsov <xramtsov@gmail.com>2015-07-21 12:35:27 +0300
commita724893887e1c656a64b5b08205ccab3ba9ee1d8 (patch)
treece84e993e0add352434b69adbf6ce786c71bb2ef /src
parentPrint content types more gracefully (diff)
parentNew hook: muc_filter_packet (diff)
Merge pull request #618 from weiss/muc-message-hook
New hook: muc_filter_packet
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