summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2021-11-29 15:01:53 +0300
committerMichael Klishin <michael@clojurewerkz.org>2021-11-29 15:01:53 +0300
commit75767faf3cf9898e42aa7e0bcade668aa1a85a55 (patch)
tree6ae3f7b72067dc0f6c01bb195655deab28334c7a
parent53eb1edf194933efd78a13f24ad80a3be197ca5c (diff)
downloadrabbitmq-server-git-rabbitmq-server-3803.tar.gz
Simplify tcp_listener argument obfuscationrabbitmq-server-3803
Per suggestions from @lhoguin
-rw-r--r--deps/rabbit/src/tcp_listener.erl39
1 files changed, 11 insertions, 28 deletions
diff --git a/deps/rabbit/src/tcp_listener.erl b/deps/rabbit/src/tcp_listener.erl
index 6523517d3e..1dcc956408 100644
--- a/deps/rabbit/src/tcp_listener.erl
+++ b/deps/rabbit/src/tcp_listener.erl
@@ -44,7 +44,7 @@
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--record(state, {on_startup, on_shutdown, label, ip, port}).
+-record(state, {on_shutdown, label, ip, port}).
%%----------------------------------------------------------------------------
@@ -63,14 +63,11 @@ start_link(IPAddress, Port,
%%--------------------------------------------------------------------
-init({IPAddress, Port, {M, F, A} = OnStartup, OnShutdown, Label}) ->
- ensure_credential_obfuscation_secret(),
-
+init({IPAddress, Port, {M, F, A}, OnShutdown, Label}) ->
process_flag(trap_exit, true),
logger:info("started ~s on ~s:~p", [Label, rabbit_misc:ntoab(IPAddress), Port]),
apply(M, F, A ++ [IPAddress, Port]),
State0 = #state{
- on_startup = OnStartup,
on_shutdown = OnShutdown,
label = Label,
ip = IPAddress,
@@ -87,11 +84,10 @@ handle_cast(_Msg, State) ->
handle_info(_Info, State) ->
{noreply, State}.
-terminate(_Reason, #state{label = Label, ip = IPAddress, port = Port} = State0) ->
- #state{on_shutdown = {M, F, A}} = deobfuscate_state(State0),
+terminate(_Reason, #state{on_shutdown = OnShutdown, label = Label, ip = IPAddress, port = Port}) ->
logger:info("stopped ~s on ~s:~p", [Label, rabbit_misc:ntoab(IPAddress), Port]),
try
- apply(M, F, A ++ [IPAddress, Port])
+ OnShutdown(IPAddress, Port)
catch _:Error ->
logger:error("Failed to stop listener ~s on ~s:~p: ~p",
[Label, rabbit_misc:ntoab(IPAddress), Port, Error])
@@ -100,24 +96,11 @@ terminate(_Reason, #state{label = Label, ip = IPAddress, port = Port} = State0)
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) ->
+obfuscate_state(#state{on_shutdown = OnShutdown} = State) ->
+ {M, F, A} = OnShutdown,
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(),
- case credentials_obfuscation:secret() of
- '$pending-secret' ->
- CookieBin = rabbit_data_coercion:to_binary(erlang:get_cookie()),
- ok = credentials_obfuscation:set_secret(CookieBin);
- _Other ->
- ok
- end.
+ %% avoids arguments from being logged in case of an exception
+ on_shutdown = fun(IPAddress, Port) ->
+ apply(M, F, A ++ [IPAddress, Port])
+ end
+ }. \ No newline at end of file