diff options
author | Holger Weiß <holger@zedat.fu-berlin.de> | 2020-09-07 10:12:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-07 10:12:19 +0200 |
commit | e9a053f7acb572a12bf6fc514bc80a7e5afef8f8 (patch) | |
tree | e24a31e9048a317f32aa64301fc9fe922038c5ed | |
parent | Revert "Run user_receive_packet in send_message so MAM stores also incoming (... (diff) |
Allow for filtering outgoing s2s stanzas (#3381)
Let 's2s_send_packet' hook callbacks filter stanzas, analogous to the
's2s_receive_packet' hook.
-rw-r--r-- | src/ejabberd_s2s.erl | 7 | ||||
-rw-r--r-- | src/mod_metrics.erl | 5 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/ejabberd_s2s.erl b/src/ejabberd_s2s.erl index f71d87fc8..f710cae68 100644 --- a/src/ejabberd_s2s.erl +++ b/src/ejabberd_s2s.erl @@ -351,8 +351,11 @@ route(Packet) -> {ok, Pid} when is_pid(Pid) -> ?DEBUG("Sending to process ~p~n", [Pid]), #jid{lserver = MyServer} = From, - ejabberd_hooks:run(s2s_send_packet, MyServer, [Packet]), - ejabberd_s2s_out:route(Pid, Packet); + case ejabberd_hooks:run_fold(s2s_send_packet, MyServer, Packet, + []) of + drop -> ok; + Packet1 -> ejabberd_s2s_out:route(Pid, Packet1) + end; {error, Reason} -> Lang = xmpp:get_lang(Packet), Err = case Reason of diff --git a/src/mod_metrics.erl b/src/mod_metrics.erl index 62229595c..81c39d59e 100644 --- a/src/mod_metrics.erl +++ b/src/mod_metrics.erl @@ -103,10 +103,11 @@ user_receive_packet({Packet, #{jid := #jid{lserver = LServer}} = C2SState}) -> push(LServer, user_receive_packet), {Packet, C2SState}. --spec s2s_send_packet(stanza()) -> any(). +-spec s2s_send_packet(stanza()) -> stanza(). s2s_send_packet(Packet) -> #jid{lserver = LServer} = xmpp:get_from(Packet), - push(LServer, s2s_send_packet). + push(LServer, s2s_send_packet), + Packet. -spec s2s_receive_packet({stanza(), ejabberd_s2s_in:state()}) -> {stanza(), ejabberd_s2s_in:state()}. |