Make sure all hooks are called with proper host
This commit is contained in:
parent
56df6e7ba8
commit
ff67860cdb
|
@ -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) ->
|
||||
|
|
Loading…
Reference in New Issue