mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-22 16:20:52 +01:00
* src/ejabberd_s2s_out.erl: Moved s2s connexion information from INFO level to DEBUG level and more human readable information explaining what is going on (EJAB-353).
SVN Revision: 930
This commit is contained in:
parent
ffd7267082
commit
b78d8ee55f
@ -111,6 +111,7 @@ stop_connection(Pid) ->
|
|||||||
%%----------------------------------------------------------------------
|
%%----------------------------------------------------------------------
|
||||||
init([From, Server, Type]) ->
|
init([From, Server, Type]) ->
|
||||||
process_flag(trap_exit, true),
|
process_flag(trap_exit, true),
|
||||||
|
?DEBUG("started: ~p", [{From, Server, Type}]),
|
||||||
TLS = case ejabberd_config:get_local_option(s2s_use_starttls) of
|
TLS = case ejabberd_config:get_local_option(s2s_use_starttls) of
|
||||||
undefined ->
|
undefined ->
|
||||||
false;
|
false;
|
||||||
@ -149,7 +150,10 @@ init([From, Server, Type]) ->
|
|||||||
%% {stop, Reason, NewStateData}
|
%% {stop, Reason, NewStateData}
|
||||||
%%----------------------------------------------------------------------
|
%%----------------------------------------------------------------------
|
||||||
open_socket(init, StateData) ->
|
open_socket(init, StateData) ->
|
||||||
?INFO_MSG("open_socket: ~p", [{StateData#state.myname,
|
log_s2s_out(StateData#state.new,
|
||||||
|
StateData#state.myname,
|
||||||
|
StateData#state.server),
|
||||||
|
?DEBUG("open_socket: ~p", [{StateData#state.myname,
|
||||||
StateData#state.server,
|
StateData#state.server,
|
||||||
StateData#state.new,
|
StateData#state.new,
|
||||||
StateData#state.verify}]),
|
StateData#state.verify}]),
|
||||||
@ -181,6 +185,8 @@ open_socket(init, StateData) ->
|
|||||||
Version])),
|
Version])),
|
||||||
{next_state, wait_for_stream, NewStateData};
|
{next_state, wait_for_stream, NewStateData};
|
||||||
{error, _Reason} ->
|
{error, _Reason} ->
|
||||||
|
?INFO_MSG("s2s connection: ~s -> ~s (remote server not found)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData}
|
{stop, normal, StateData}
|
||||||
end;
|
end;
|
||||||
open_socket(stop, StateData) ->
|
open_socket(stop, StateData) ->
|
||||||
@ -236,18 +242,26 @@ wait_for_stream({xmlstreamstart, Name, Attrs}, StateData) ->
|
|||||||
{next_state, wait_for_features, StateData#state{db_enabled = false}};
|
{next_state, wait_for_features, StateData#state{db_enabled = false}};
|
||||||
_ ->
|
_ ->
|
||||||
send_text(StateData, ?INVALID_NAMESPACE_ERR),
|
send_text(StateData, ?INVALID_NAMESPACE_ERR),
|
||||||
|
?INFO_MSG("Closing s2s connection: ~s -> ~s (invalid namespace)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData}
|
{stop, normal, StateData}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
wait_for_stream({xmlstreamerror, _}, StateData) ->
|
wait_for_stream({xmlstreamerror, _}, StateData) ->
|
||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
?INVALID_XML_ERR ++ ?STREAM_TRAILER),
|
?INVALID_XML_ERR ++ ?STREAM_TRAILER),
|
||||||
|
?INFO_MSG("Closing s2s connection: ~s -> ~s (invalid xml)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
wait_for_stream(timeout, StateData) ->
|
wait_for_stream(timeout, StateData) ->
|
||||||
|
?INFO_MSG("Closing s2s connection: ~s -> ~s (timeout in wait_for_stream)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
wait_for_stream(closed, StateData) ->
|
wait_for_stream(closed, StateData) ->
|
||||||
|
?INFO_MSG("Closing s2s connection: ~s -> ~s (close in wait_for_stream)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData}.
|
{stop, normal, StateData}.
|
||||||
|
|
||||||
|
|
||||||
@ -255,18 +269,22 @@ wait_for_stream(closed, StateData) ->
|
|||||||
wait_for_validation({xmlstreamelement, El}, StateData) ->
|
wait_for_validation({xmlstreamelement, El}, StateData) ->
|
||||||
case is_verify_res(El) of
|
case is_verify_res(El) of
|
||||||
{result, To, From, Id, Type} ->
|
{result, To, From, Id, Type} ->
|
||||||
?INFO_MSG("recv result: ~p", [{From, To, Id, Type}]),
|
?DEBUG("recv result: ~p", [{From, To, Id, Type}]),
|
||||||
case Type of
|
case Type of
|
||||||
"valid" ->
|
"valid" ->
|
||||||
send_queue(StateData, StateData#state.queue),
|
send_queue(StateData, StateData#state.queue),
|
||||||
|
?INFO_MSG("Connection established: ~s -> ~s",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{next_state, stream_established,
|
{next_state, stream_established,
|
||||||
StateData#state{queue = queue:new()}};
|
StateData#state{queue = queue:new()}};
|
||||||
_ ->
|
_ ->
|
||||||
% TODO: bounce packets
|
%% TODO: bounce packets
|
||||||
|
?INFO_MSG("Closing s2s connection: ~s -> ~s (invalid dialback key)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData}
|
{stop, normal, StateData}
|
||||||
end;
|
end;
|
||||||
{verify, To, From, Id, Type} ->
|
{verify, To, From, Id, Type} ->
|
||||||
?INFO_MSG("recv verify: ~p", [{From, To, Id, Type}]),
|
?DEBUG("recv verify: ~p", [{From, To, Id, Type}]),
|
||||||
case StateData#state.verify of
|
case StateData#state.verify of
|
||||||
false ->
|
false ->
|
||||||
{next_state, wait_for_validation, StateData};
|
{next_state, wait_for_validation, StateData};
|
||||||
@ -350,6 +368,8 @@ wait_for_features({xmlstreamelement, El}, StateData) ->
|
|||||||
(not SASLEXT) and (not StartTLS) and
|
(not SASLEXT) and (not StartTLS) and
|
||||||
StateData#state.authenticated ->
|
StateData#state.authenticated ->
|
||||||
send_queue(StateData, StateData#state.queue),
|
send_queue(StateData, StateData#state.queue),
|
||||||
|
?INFO_MSG("Connection established: ~s -> ~s",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{next_state, stream_established,
|
{next_state, stream_established,
|
||||||
StateData#state{queue = queue:new()}};
|
StateData#state{queue = queue:new()}};
|
||||||
SASLEXT and StateData#state.try_auth and
|
SASLEXT and StateData#state.try_auth and
|
||||||
@ -370,7 +390,7 @@ wait_for_features({xmlstreamelement, El}, StateData) ->
|
|||||||
[{"xmlns", ?NS_TLS}], []}),
|
[{"xmlns", ?NS_TLS}], []}),
|
||||||
{next_state, wait_for_starttls_proceed, StateData};
|
{next_state, wait_for_starttls_proceed, StateData};
|
||||||
StartTLSRequired and (not StateData#state.tls) ->
|
StartTLSRequired and (not StateData#state.tls) ->
|
||||||
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
|
?DEBUG("restarted: ~p", [{StateData#state.myname,
|
||||||
StateData#state.server}]),
|
StateData#state.server}]),
|
||||||
ejabberd_socket:close(StateData#state.socket),
|
ejabberd_socket:close(StateData#state.socket),
|
||||||
{next_state, reopen_socket,
|
{next_state, reopen_socket,
|
||||||
@ -379,7 +399,7 @@ wait_for_features({xmlstreamelement, El}, StateData) ->
|
|||||||
StateData#state.db_enabled ->
|
StateData#state.db_enabled ->
|
||||||
send_db_request(StateData);
|
send_db_request(StateData);
|
||||||
true ->
|
true ->
|
||||||
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
|
?DEBUG("restarted: ~p", [{StateData#state.myname,
|
||||||
StateData#state.server}]),
|
StateData#state.server}]),
|
||||||
% TODO: clear message queue
|
% TODO: clear message queue
|
||||||
ejabberd_socket:close(StateData#state.socket),
|
ejabberd_socket:close(StateData#state.socket),
|
||||||
@ -390,21 +410,27 @@ wait_for_features({xmlstreamelement, El}, StateData) ->
|
|||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
xml:element_to_string(?SERR_BAD_FORMAT) ++
|
xml:element_to_string(?SERR_BAD_FORMAT) ++
|
||||||
?STREAM_TRAILER),
|
?STREAM_TRAILER),
|
||||||
|
?INFO_MSG("Closing s2s connection: ~s -> ~s (bad format)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData}
|
{stop, normal, StateData}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
wait_for_features({xmlstreamend, Name}, StateData) ->
|
wait_for_features({xmlstreamend, Name}, StateData) ->
|
||||||
|
?INFO_MSG("wait_for_features: xmlstreamend", []),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
wait_for_features({xmlstreamerror, _}, StateData) ->
|
wait_for_features({xmlstreamerror, _}, StateData) ->
|
||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
?INVALID_XML_ERR ++ ?STREAM_TRAILER),
|
?INVALID_XML_ERR ++ ?STREAM_TRAILER),
|
||||||
|
?INFO_MSG("wait for features: xmlstreamerror", []),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
wait_for_features(timeout, StateData) ->
|
wait_for_features(timeout, StateData) ->
|
||||||
|
?INFO_MSG("wait for features: timeout", []),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
wait_for_features(closed, StateData) ->
|
wait_for_features(closed, StateData) ->
|
||||||
|
?INFO_MSG("wait for features: closed", []),
|
||||||
{stop, normal, StateData}.
|
{stop, normal, StateData}.
|
||||||
|
|
||||||
|
|
||||||
@ -413,7 +439,7 @@ wait_for_auth_result({xmlstreamelement, El}, StateData) ->
|
|||||||
{xmlelement, "success", Attrs, _Els} ->
|
{xmlelement, "success", Attrs, _Els} ->
|
||||||
case xml:get_attr_s("xmlns", Attrs) of
|
case xml:get_attr_s("xmlns", Attrs) of
|
||||||
?NS_SASL ->
|
?NS_SASL ->
|
||||||
?INFO_MSG("auth: ~p", [{StateData#state.myname,
|
?DEBUG("auth: ~p", [{StateData#state.myname,
|
||||||
StateData#state.server}]),
|
StateData#state.server}]),
|
||||||
ejabberd_socket:reset_stream(StateData#state.socket),
|
ejabberd_socket:reset_stream(StateData#state.socket),
|
||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
@ -428,12 +454,14 @@ wait_for_auth_result({xmlstreamelement, El}, StateData) ->
|
|||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
xml:element_to_string(?SERR_BAD_FORMAT) ++
|
xml:element_to_string(?SERR_BAD_FORMAT) ++
|
||||||
?STREAM_TRAILER),
|
?STREAM_TRAILER),
|
||||||
|
?INFO_MSG("Closing s2s connection: ~s -> ~s (bad format)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData}
|
{stop, normal, StateData}
|
||||||
end;
|
end;
|
||||||
{xmlelement, "failure", Attrs, _Els} ->
|
{xmlelement, "failure", Attrs, _Els} ->
|
||||||
case xml:get_attr_s("xmlns", Attrs) of
|
case xml:get_attr_s("xmlns", Attrs) of
|
||||||
?NS_SASL ->
|
?NS_SASL ->
|
||||||
?INFO_MSG("restarted: ~p", [{StateData#state.myname,
|
?DEBUG("restarted: ~p", [{StateData#state.myname,
|
||||||
StateData#state.server}]),
|
StateData#state.server}]),
|
||||||
ejabberd_socket:close(StateData#state.socket),
|
ejabberd_socket:close(StateData#state.socket),
|
||||||
{next_state, reopen_socket,
|
{next_state, reopen_socket,
|
||||||
@ -442,27 +470,35 @@ wait_for_auth_result({xmlstreamelement, El}, StateData) ->
|
|||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
xml:element_to_string(?SERR_BAD_FORMAT) ++
|
xml:element_to_string(?SERR_BAD_FORMAT) ++
|
||||||
?STREAM_TRAILER),
|
?STREAM_TRAILER),
|
||||||
|
?INFO_MSG("Closing s2s connection: ~s -> ~s (bad format)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData}
|
{stop, normal, StateData}
|
||||||
end;
|
end;
|
||||||
_ ->
|
_ ->
|
||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
xml:element_to_string(?SERR_BAD_FORMAT) ++
|
xml:element_to_string(?SERR_BAD_FORMAT) ++
|
||||||
?STREAM_TRAILER),
|
?STREAM_TRAILER),
|
||||||
|
?INFO_MSG("Closing s2s connection: ~s -> ~s (bad format)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData}
|
{stop, normal, StateData}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
wait_for_auth_result({xmlstreamend, Name}, StateData) ->
|
wait_for_auth_result({xmlstreamend, Name}, StateData) ->
|
||||||
|
?INFO_MSG("wait for auth result: xmlstreamend", []),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
wait_for_auth_result({xmlstreamerror, _}, StateData) ->
|
wait_for_auth_result({xmlstreamerror, _}, StateData) ->
|
||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
?INVALID_XML_ERR ++ ?STREAM_TRAILER),
|
?INVALID_XML_ERR ++ ?STREAM_TRAILER),
|
||||||
|
?INFO_MSG("wait for auth result: xmlstreamerror", []),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
wait_for_auth_result(timeout, StateData) ->
|
wait_for_auth_result(timeout, StateData) ->
|
||||||
|
?INFO_MSG("wait for auth result: timeout", []),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
wait_for_auth_result(closed, StateData) ->
|
wait_for_auth_result(closed, StateData) ->
|
||||||
|
?INFO_MSG("wait for auth result: closed", []),
|
||||||
{stop, normal, StateData}.
|
{stop, normal, StateData}.
|
||||||
|
|
||||||
|
|
||||||
@ -471,7 +507,7 @@ wait_for_starttls_proceed({xmlstreamelement, El}, StateData) ->
|
|||||||
{xmlelement, "proceed", Attrs, _Els} ->
|
{xmlelement, "proceed", Attrs, _Els} ->
|
||||||
case xml:get_attr_s("xmlns", Attrs) of
|
case xml:get_attr_s("xmlns", Attrs) of
|
||||||
?NS_TLS ->
|
?NS_TLS ->
|
||||||
?INFO_MSG("starttls: ~p", [{StateData#state.myname,
|
?DEBUG("starttls: ~p", [{StateData#state.myname,
|
||||||
StateData#state.server}]),
|
StateData#state.server}]),
|
||||||
Socket = StateData#state.socket,
|
Socket = StateData#state.socket,
|
||||||
TLSOpts = case ejabberd_config:get_local_option(
|
TLSOpts = case ejabberd_config:get_local_option(
|
||||||
@ -499,24 +535,32 @@ wait_for_starttls_proceed({xmlstreamelement, El}, StateData) ->
|
|||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
xml:element_to_string(?SERR_BAD_FORMAT) ++
|
xml:element_to_string(?SERR_BAD_FORMAT) ++
|
||||||
?STREAM_TRAILER),
|
?STREAM_TRAILER),
|
||||||
|
?INFO_MSG("Closing s2s connection: ~s -> ~s (bad format)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData}
|
{stop, normal, StateData}
|
||||||
end;
|
end;
|
||||||
_ ->
|
_ ->
|
||||||
|
?INFO_MSG("Closing s2s connection: ~s -> ~s (bad format)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData}
|
{stop, normal, StateData}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
wait_for_starttls_proceed({xmlstreamend, Name}, StateData) ->
|
wait_for_starttls_proceed({xmlstreamend, Name}, StateData) ->
|
||||||
|
?INFO_MSG("wait for starttls proceed: xmlstreamend", []),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
wait_for_starttls_proceed({xmlstreamerror, _}, StateData) ->
|
wait_for_starttls_proceed({xmlstreamerror, _}, StateData) ->
|
||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
?INVALID_XML_ERR ++ ?STREAM_TRAILER),
|
?INVALID_XML_ERR ++ ?STREAM_TRAILER),
|
||||||
|
?INFO_MSG("wait for starttls proceed: xmlstreamerror", []),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
wait_for_starttls_proceed(timeout, StateData) ->
|
wait_for_starttls_proceed(timeout, StateData) ->
|
||||||
|
?INFO_MSG("wait for starttls proceed: timeout", []),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
wait_for_starttls_proceed(closed, StateData) ->
|
wait_for_starttls_proceed(closed, StateData) ->
|
||||||
|
?INFO_MSG("wait for starttls proceed: closed", []),
|
||||||
{stop, normal, StateData}.
|
{stop, normal, StateData}.
|
||||||
|
|
||||||
|
|
||||||
@ -534,10 +578,10 @@ reopen_socket(closed, StateData) ->
|
|||||||
|
|
||||||
|
|
||||||
stream_established({xmlstreamelement, El}, StateData) ->
|
stream_established({xmlstreamelement, El}, StateData) ->
|
||||||
?INFO_MSG("stream established", []),
|
?DEBUG("s2S stream established", []),
|
||||||
case is_verify_res(El) of
|
case is_verify_res(El) of
|
||||||
{verify, VTo, VFrom, VId, VType} ->
|
{verify, VTo, VFrom, VId, VType} ->
|
||||||
?INFO_MSG("recv verify: ~p", [{VFrom, VTo, VId, VType}]),
|
?DEBUG("recv verify: ~p", [{VFrom, VTo, VId, VType}]),
|
||||||
case StateData#state.verify of
|
case StateData#state.verify of
|
||||||
{VPid, _VKey, _SID} ->
|
{VPid, _VKey, _SID} ->
|
||||||
case VType of
|
case VType of
|
||||||
@ -561,17 +605,25 @@ stream_established({xmlstreamelement, El}, StateData) ->
|
|||||||
{next_state, stream_established, StateData};
|
{next_state, stream_established, StateData};
|
||||||
|
|
||||||
stream_established({xmlstreamend, Name}, StateData) ->
|
stream_established({xmlstreamend, Name}, StateData) ->
|
||||||
|
?INFO_MSG("stream established: ~s -> ~s (xmlstreamend)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
stream_established({xmlstreamerror, _}, StateData) ->
|
stream_established({xmlstreamerror, _}, StateData) ->
|
||||||
send_text(StateData,
|
send_text(StateData,
|
||||||
?INVALID_XML_ERR ++ ?STREAM_TRAILER),
|
?INVALID_XML_ERR ++ ?STREAM_TRAILER),
|
||||||
|
?INFO_MSG("stream established: ~s -> ~s (xmlstreamerror)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
stream_established(timeout, StateData) ->
|
stream_established(timeout, StateData) ->
|
||||||
|
?INFO_MSG("stream established: ~s -> ~s (timeout)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
|
|
||||||
stream_established(closed, StateData) ->
|
stream_established(closed, StateData) ->
|
||||||
|
?INFO_MSG("stream established: ~s -> ~s (closed)",
|
||||||
|
[StateData#state.myname, StateData#state.server]),
|
||||||
{stop, normal, StateData}.
|
{stop, normal, StateData}.
|
||||||
|
|
||||||
|
|
||||||
@ -652,7 +704,7 @@ handle_info(_, StateName, StateData) ->
|
|||||||
%% Returns: any
|
%% Returns: any
|
||||||
%%----------------------------------------------------------------------
|
%%----------------------------------------------------------------------
|
||||||
terminate(Reason, StateName, StateData) ->
|
terminate(Reason, StateName, StateData) ->
|
||||||
?INFO_MSG("terminated: ~p", [{Reason, StateName}]),
|
?DEBUG("terminated: ~p", [{Reason, StateName}]),
|
||||||
case StateData#state.new of
|
case StateData#state.new of
|
||||||
false ->
|
false ->
|
||||||
ok;
|
ok;
|
||||||
@ -660,6 +712,7 @@ terminate(Reason, StateName, StateData) ->
|
|||||||
ejabberd_s2s:remove_connection(
|
ejabberd_s2s:remove_connection(
|
||||||
{StateData#state.myname, StateData#state.server}, self(), Key)
|
{StateData#state.myname, StateData#state.server}, self(), Key)
|
||||||
end,
|
end,
|
||||||
|
%% bounce queue manage by process and Erlang message queue
|
||||||
bounce_queue(StateData#state.queue, ?ERR_REMOTE_SERVER_NOT_FOUND),
|
bounce_queue(StateData#state.queue, ?ERR_REMOTE_SERVER_NOT_FOUND),
|
||||||
bounce_messages(?ERR_REMOTE_SERVER_NOT_FOUND),
|
bounce_messages(?ERR_REMOTE_SERVER_NOT_FOUND),
|
||||||
case StateData#state.socket of
|
case StateData#state.socket of
|
||||||
@ -848,3 +901,10 @@ test_get_addr_port(Server) ->
|
|||||||
lists:keyreplace(HostPort, 1, Acc, {HostPort, Num + 1})
|
lists:keyreplace(HostPort, 1, Acc, {HostPort, Num + 1})
|
||||||
end
|
end
|
||||||
end, [], lists:seq(1, 100000)).
|
end, [], lists:seq(1, 100000)).
|
||||||
|
|
||||||
|
%% Human readable S2S logging: Log only new outgoing connections as INFO
|
||||||
|
%% Do not log dialback
|
||||||
|
log_s2s_out(false, _, _) -> ok;
|
||||||
|
%% Log new outgoing connections:
|
||||||
|
log_s2s_out(_, Myname, Server) ->
|
||||||
|
?INFO_MSG("Trying to open s2s connection: ~s -> ~s",[Myname, Server]).
|
||||||
|
Loading…
Reference in New Issue
Block a user