aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_c2s.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-16 18:15:08 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-16 18:15:08 +0300
commita849b384f828a012616d757606e3201c15d4df0c (patch)
tree682d456fcf7afc71c05c3e00e46a7d1f03db9ece /src/ejabberd_c2s.erl
parentAdd script to check hook dependencies (diff)
parentAdd mod_block_strangers (diff)
Merge branch 'new_stream' of github.com:processone/ejabberd into new_stream
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r--src/ejabberd_c2s.erl20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index ecd6321d4..113be0910 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -546,7 +546,7 @@ process_iq_in(State, #iq{} = IQ) ->
-spec process_message_in(state(), message()) -> {boolean(), state()}.
process_message_in(State, #message{type = T} = Msg) ->
- case privacy_check_packet(State, Msg, in) of
+ case filter_incoming_message(State, Msg) of
allow ->
{true, State};
deny when T == groupchat; T == headline ->
@@ -561,6 +561,24 @@ process_message_in(State, #message{type = T} = Msg) ->
{false, State}
end.
+filter_incoming_message(State, Msg) ->
+ case privacy_check_packet(State, Msg, in) of
+ allow ->
+ #{lserver := LServer} = State,
+ case ejabberd_hooks:run_fold(
+ c2s_filter_incoming_packet,
+ LServer,
+ allow,
+ [State, Msg]) of
+ allow ->
+ allow;
+ deny ->
+ deny
+ end;
+ deny ->
+ deny
+ end.
+
-spec process_presence_in(state(), presence()) -> {boolean(), state()}.
process_presence_in(#{lserver := LServer, pres_a := PresA} = State0,
#presence{from = From, to = To, type = T} = Pres) ->