Skip to content
Permalink
Browse files

feat: add hook for sending packet from component

New hook 'component_send_packet' added.
Callback function must accept one argument {Pkt, ComponentState} and should yield 'drop' or {NewPkt, NewComponentState}.
  • Loading branch information
Pouriya-Jahanbakhsh committed Mar 30, 2018
1 parent 9373ad2 commit 7b3d26992b492063d6a6c2af3c595934d681accc
Showing with 9 additions and 3 deletions.
  1. +9 −3 src/ejabberd_service.erl
@@ -185,14 +185,20 @@ handle_auth_failure(_, Mech, Reason,
Reason]),
State.

handle_authenticated_packet(Pkt0, #{ip := {IP, _}, lang := Lang} = State)
handle_authenticated_packet(Pkt0, #{server := Server, ip := {IP, _}, lang := Lang} = State)
when ?is_stanza(Pkt0) ->
Pkt = xmpp:put_meta(Pkt0, ip, IP),
From = xmpp:get_from(Pkt),
case check_from(From, State) of
true ->
ejabberd_router:route(Pkt),
State;
{Pkt2, State2} = ejabberd_hooks:run_fold(component_send_packet, Server, {Pkt, State}, []),
case Pkt2 of
drop ->
ok;
_ ->
ejabberd_router:route(Pkt2)
end,
State2;
false ->
Txt = <<"Improper domain part of 'from' attribute">>,
Err = xmpp:serr_invalid_from(Txt, Lang),

0 comments on commit 7b3d269

Please sign in to comment.
You can’t perform that action at this time.