chore: remove peercert from the state of connection processes
This commit is contained in:
parent
d1bc1e92d6
commit
4142a47e66
|
@ -250,7 +250,9 @@ init(ConnInfo = #{peername := {PeerHost, _Port},
|
||||||
is_superuser => false
|
is_superuser => false
|
||||||
}, Options),
|
}, Options),
|
||||||
{NClientInfo, NConnInfo} = take_ws_cookie(ClientInfo, ConnInfo),
|
{NClientInfo, NConnInfo} = take_ws_cookie(ClientInfo, ConnInfo),
|
||||||
#channel{conninfo = NConnInfo,
|
#channel{%% We remove the peercert because it duplicates to what's stored in the socket,
|
||||||
|
%% Saving a copy here causes unnecessary wast of memory (about 1KB per connection).
|
||||||
|
conninfo = maps:put(peercert, undefined, NConnInfo),
|
||||||
clientinfo = NClientInfo,
|
clientinfo = NClientInfo,
|
||||||
topic_aliases = #{inbound => #{},
|
topic_aliases = #{inbound => #{},
|
||||||
outbound => #{}
|
outbound => #{}
|
||||||
|
|
|
@ -550,4 +550,10 @@ tls_certcn_as_clientid(TLSVsn, RequiredTLSVsn) ->
|
||||||
{ok, _} = emqtt:connect(Client),
|
{ok, _} = emqtt:connect(Client),
|
||||||
#{clientinfo := #{clientid := CN}} = emqx_cm:get_chan_info(CN),
|
#{clientinfo := #{clientid := CN}} = emqx_cm:get_chan_info(CN),
|
||||||
confirm_tls_version( Client, RequiredTLSVsn ),
|
confirm_tls_version( Client, RequiredTLSVsn ),
|
||||||
|
%% verify that the peercert won't be stored in the conninfo
|
||||||
|
[ChannPid] = emqx_cm:lookup_channels(CN),
|
||||||
|
SysState = sys:get_state(ChannPid),
|
||||||
|
ChannelRecord = lists:keyfind(channel, 1, tuple_to_list(SysState)),
|
||||||
|
ConnInfo = lists:nth(2, tuple_to_list(ChannelRecord)),
|
||||||
|
?assertMatch(#{peercert := undefined}, ConnInfo),
|
||||||
emqtt:disconnect(Client).
|
emqtt:disconnect(Client).
|
||||||
|
|
Loading…
Reference in New Issue