summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2021-11-28 17:11:35 +0300
committerMichael Klishin <michael@clojurewerkz.org>2021-11-28 17:11:35 +0300
commit71d636606983a17485c24709de774176b5edda17 (patch)
treed8b9bd726facbd2ce34e404796ea049c6f40d0f4
parenteb5a5f654e7c750df5bc2ac850616de61af2a176 (diff)
downloadrabbitmq-server-git-71d636606983a17485c24709de774176b5edda17.tar.gz
tcp_listener: avoid logging listener arguments on shutdown
Closes #3803
-rw-r--r--deps/rabbit/src/tcp_listener.erl41
1 files changed, 36 insertions, 5 deletions
diff --git a/deps/rabbit/src/tcp_listener.erl b/deps/rabbit/src/tcp_listener.erl
index 712280fce1..ebc33375ad 100644
--- a/deps/rabbit/src/tcp_listener.erl
+++ b/deps/rabbit/src/tcp_listener.erl
@@ -63,12 +63,20 @@ start_link(IPAddress, Port,
%%--------------------------------------------------------------------
-init({IPAddress, Port, {M,F,A} = OnStartup, OnShutdown, Label}) ->
+init({IPAddress, Port, {M, F, A} = OnStartup, OnShutdown, Label}) ->
+ ensure_credential_obfuscation_secret(),
+
process_flag(trap_exit, true),
logger:info("started ~s on ~s:~p", [Label, rabbit_misc:ntoab(IPAddress), Port]),
apply(M, F, A ++ [IPAddress, Port]),
- {ok, #state{on_startup = OnStartup, on_shutdown = OnShutdown,
- label = Label, ip=IPAddress, port=Port}}.
+ State0 = #state{
+ on_startup = OnStartup,
+ on_shutdown = OnShutdown,
+ label = Label,
+ ip = IPAddress,
+ port = Port
+ },
+ {ok, obfuscate_state(State0)}.
handle_call(_Request, _From, State) ->
{noreply, State}.
@@ -79,9 +87,32 @@ handle_cast(_Msg, State) ->
handle_info(_Info, State) ->
{noreply, State}.
-terminate(_Reason, #state{on_shutdown = {M,F,A}, label=Label, ip=IPAddress, port=Port}) ->
+terminate(_Reason, #state{label = Label, ip = IPAddress, port = Port} = State0) ->
+ #state{on_shutdown = {M, F, A}} = deobfuscate_state(State0),
logger:info("stopped ~s on ~s:~p", [Label, rabbit_misc:ntoab(IPAddress), Port]),
- apply(M, F, A ++ [IPAddress, Port]).
+ try
+ apply(M, F, A ++ [IPAddress, Port])
+ catch _:Error ->
+ logger:error("Failed to stop listener ~s on ~s:~p: ~p",
+ [Label, rabbit_misc:ntoab(IPAddress), Port, Error])
+ end.
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
+
+obfuscate_state(#state{on_startup = OnStartup, on_shutdown = OnShutdown} = State) ->
+ State#state{
+ on_startup = credentials_obfuscation:encrypt(term_to_binary(OnStartup)),
+ on_shutdown = credentials_obfuscation:encrypt(term_to_binary(OnShutdown))
+ }.
+
+deobfuscate_state(#state{on_startup = OnStartup, on_shutdown = OnShutdown} = State) ->
+ State#state{
+ on_startup = binary_to_term(credentials_obfuscation:decrypt(OnStartup)),
+ on_shutdown = binary_to_term(credentials_obfuscation:decrypt(OnShutdown))
+ }.
+
+ensure_credential_obfuscation_secret() ->
+ ok = credentials_obfuscation:refresh_config(),
+ CookieBin = rabbit_data_coercion:to_binary(erlang:get_cookie()),
+ ok = credentials_obfuscation:set_secret(CookieBin).