diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl index 778a53469..b9ae1abb3 100644 --- a/src/ejabberd_s2s_out.erl +++ b/src/ejabberd_s2s_out.erl @@ -360,10 +360,17 @@ bounce_message_queue(FromTo, State) -> -spec bounce_packet(xmpp_element(), state()) -> state(). bounce_packet(Pkt, State) when ?is_stanza(Pkt) -> - Lang = xmpp:get_lang(Pkt), - Err = mk_bounce_error(Lang, State), - ejabberd_router:route_error(Pkt, Err), - State; + #{server_host := Host} = State, + case ejabberd_hooks:run_fold( + s2s_out_bounce_packet, Host, State, [Pkt]) of + ignore -> + State; + State2 -> + Lang = xmpp:get_lang(Pkt), + Err = mk_bounce_error(Lang, State2), + ejabberd_router:route_error(Pkt, Err), + State2 + end; bounce_packet(_, State) -> State.