diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-02-22 19:45:12 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-02-22 19:45:12 +0300 |
commit | ff67860cdbc3d567e31fa064f3dad0afe7739a12 (patch) | |
tree | cff2c28437f88ec1031ea7e13ed21c5c199f3024 | |
parent | Add missing NOT NULL restrictions (diff) |
Make sure all hooks are called with proper host
-rw-r--r-- | src/ejabberd_s2s_out.erl | 46 |
1 files changed, 25 insertions, 21 deletions
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) -> |