From a93f747afa7c70de3f8621e103795d303e40133e Mon Sep 17 00:00:00 2001 From: ieQu1 <99872536+ieQu1@users.noreply.github.com> Date: Thu, 14 Mar 2024 17:34:40 +0100 Subject: [PATCH] fix(sessds): Return peername of the disconnected client in the REST --- apps/emqx_management/src/emqx_mgmt_api_clients.erl | 11 +++++++++-- changes/ce/fix-12707.en.md | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 changes/ce/fix-12707.en.md diff --git a/apps/emqx_management/src/emqx_mgmt_api_clients.erl b/apps/emqx_management/src/emqx_mgmt_api_clients.erl index bc07d38bf..e661a8360 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_clients.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_clients.erl @@ -1181,14 +1181,21 @@ format_persistent_session_info(ClientId, PSInfo0) -> Metadata = maps:get(metadata, PSInfo0, #{}), PSInfo1 = maps:with([created_at, expiry_interval], Metadata), CreatedAt = maps:get(created_at, PSInfo1), + case Metadata of + #{peername := PeerName} -> + {IpAddress, Port} = peername_dispart(PeerName); + _ -> + IpAddress = undefined, + Port = undefined + end, PSInfo2 = convert_expiry_interval_unit(PSInfo1), PSInfo3 = PSInfo2#{ clientid => ClientId, connected => false, connected_at => CreatedAt, - ip_address => undefined, + ip_address => IpAddress, is_persistent => true, - port => undefined + port => Port }, PSInfo = lists:foldl( fun result_format_time_fun/2, diff --git a/changes/ce/fix-12707.en.md b/changes/ce/fix-12707.en.md new file mode 100644 index 000000000..032cdb2d6 --- /dev/null +++ b/changes/ce/fix-12707.en.md @@ -0,0 +1 @@ +Keep IP and port of the durable client sessions in the database.