diff options
-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()}. |