From: Evgeniy Khramtsov Date: Wed, 22 Feb 2017 16:45:12 +0000 (+0300) Subject: Make sure all hooks are called with proper host X-Git-Tag: 17.03-beta~19 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ff67860cdbc3d567e31fa064f3dad0afe7739a12;p=ejabberd Make sure all hooks are called with proper host --- diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl index 909177266..32dda56ad 100644 --- a/src/ejabberd_s2s_out.erl +++ b/src/ejabberd_s2s_out.erl @@ -216,46 +216,48 @@ dns_timeout(#{server := LServer}) -> handle_auth_success(Mech, #{sockmod := SockMod, socket := Socket, ip := IP, remote_server := RServer, + server_host := ServerHost, server := LServer} = State) -> ?INFO_MSG("(~s) Accepted outbound s2s ~s authentication ~s -> ~s (~s)", [SockMod:pp(Socket), Mech, LServer, RServer, ejabberd_config:may_hide_data(jlib:ip_to_list(IP))]), - ejabberd_hooks:run_fold(s2s_out_auth_result, LServer, State, [true]). + ejabberd_hooks:run_fold(s2s_out_auth_result, ServerHost, State, [true]). handle_auth_failure(Mech, Reason, #{sockmod := SockMod, socket := Socket, ip := IP, remote_server := RServer, + server_host := ServerHost, server := LServer} = State) -> ?INFO_MSG("(~s) Failed outbound s2s ~s authentication ~s -> ~s (~s): ~s", [SockMod:pp(Socket), Mech, LServer, RServer, ejabberd_config:may_hide_data(jlib:ip_to_list(IP)), xmpp_stream_out:format_error(Reason)]), - ejabberd_hooks:run_fold(s2s_out_auth_result, LServer, State, [{false, Reason}]). + ejabberd_hooks:run_fold(s2s_out_auth_result, ServerHost, State, [{false, Reason}]). -handle_packet(Pkt, #{server := LServer} = State) -> - ejabberd_hooks:run_fold(s2s_out_packet, LServer, State, [Pkt]). +handle_packet(Pkt, #{server_host := ServerHost} = State) -> + ejabberd_hooks:run_fold(s2s_out_packet, ServerHost, State, [Pkt]). -handle_stream_end(Reason, #{server := LServer} = State) -> +handle_stream_end(Reason, #{server_host := ServerHost} = State) -> State1 = State#{stop_reason => Reason}, - ejabberd_hooks:run_fold(s2s_out_closed, LServer, State1, [Reason]). + ejabberd_hooks:run_fold(s2s_out_closed, ServerHost, State1, [Reason]). -handle_stream_downgraded(StreamStart, #{server := LServer} = State) -> - ejabberd_hooks:run_fold(s2s_out_downgraded, LServer, State, [StreamStart]). +handle_stream_downgraded(StreamStart, #{server_host := ServerHost} = State) -> + ejabberd_hooks:run_fold(s2s_out_downgraded, ServerHost, State, [StreamStart]). handle_stream_established(State) -> State1 = State#{on_route => send}, State2 = resend_queue(State1), set_idle_timeout(State2). -handle_cdata(Data, #{server := LServer} = State) -> - ejabberd_hooks:run_fold(s2s_out_handle_cdata, LServer, State, [Data]). +handle_cdata(Data, #{server_host := ServerHost} = State) -> + ejabberd_hooks:run_fold(s2s_out_handle_cdata, ServerHost, State, [Data]). -handle_recv(El, Pkt, #{server := LServer} = State) -> - ejabberd_hooks:run_fold(s2s_out_handle_recv, LServer, State, [El, Pkt]). +handle_recv(El, Pkt, #{server_host := ServerHost} = State) -> + ejabberd_hooks:run_fold(s2s_out_handle_recv, ServerHost, State, [El, Pkt]). -handle_send(El, Pkt, #{server := LServer} = State) -> - ejabberd_hooks:run_fold(s2s_out_handle_send, LServer, State, [El, Pkt]). +handle_send(El, Pkt, #{server_host := ServerHost} = State) -> + ejabberd_hooks:run_fold(s2s_out_handle_send, ServerHost, State, [El, Pkt]). handle_timeout(#{on_route := Action} = State) -> case Action of @@ -264,25 +266,27 @@ handle_timeout(#{on_route := Action} = State) -> end. init([#{server := LServer, remote_server := RServer} = State, Opts]) -> + ServerHost = ejabberd_router:host_of_route(LServer), State1 = State#{on_route => queue, queue => queue:new(), xmlns => ?NS_SERVER, lang => ?MYLANG, + server_host => ServerHost, shaper => none}, ?INFO_MSG("Outbound s2s connection started: ~s -> ~s", [LServer, RServer]), - ejabberd_hooks:run_fold(s2s_out_init, LServer, {ok, State1}, [Opts]). + ejabberd_hooks:run_fold(s2s_out_init, ServerHost, {ok, State1}, [Opts]). -handle_call(Request, From, #{server := LServer} = State) -> - ejabberd_hooks:run_fold(s2s_out_handle_call, LServer, State, [Request, From]). +handle_call(Request, From, #{server_host := ServerHost} = State) -> + ejabberd_hooks:run_fold(s2s_out_handle_call, ServerHost, State, [Request, From]). handle_cast({update_state, Fun}, State) -> case Fun of {M, F, A} -> erlang:apply(M, F, [State|A]); _ when is_function(Fun) -> Fun(State) end; -handle_cast(Msg, #{server := LServer} = State) -> - ejabberd_hooks:run_fold(s2s_out_handle_cast, LServer, State, [Msg]). +handle_cast(Msg, #{server_host := ServerHost} = State) -> + ejabberd_hooks:run_fold(s2s_out_handle_cast, ServerHost, State, [Msg]). handle_info({route, Pkt}, #{queue := Q, on_route := Action} = State) -> case Action of @@ -290,8 +294,8 @@ handle_info({route, Pkt}, #{queue := Q, on_route := Action} = State) -> bounce -> bounce_packet(Pkt, State); send -> set_idle_timeout(send(State, Pkt)) end; -handle_info(Info, #{server := LServer} = State) -> - ejabberd_hooks:run_fold(s2s_out_handle_info, LServer, State, [Info]). +handle_info(Info, #{server_host := ServerHost} = State) -> + ejabberd_hooks:run_fold(s2s_out_handle_info, ServerHost, State, [Info]). terminate(Reason, #{server := LServer, remote_server := RServer} = State) ->