File 4292-Improve-observer-node-list-menu-in-distribution-edge.patch of Package erlang
From e26584bc05f8a9784c531599fd0a6bae85ad1c49 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20G=C3=B6m=C3=B6ri?= <gomoripeti@gmail.com>
Date: Mon, 30 May 2022 01:38:11 +0200
Subject: [PATCH 2/2] Improve observer node list menu in distribution edge
cases
- Always include current node. If dist_listen is false it won't show up
in epdm names
- If the default epmd module erl_epmd is used and erl_epmd_port is set
to `DistPort' then it is only possible to connect to the node listening
on DistPort (if any), so exclude other nodes registered in EPMD
---
lib/observer/src/observer_wx.erl | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/lib/observer/src/observer_wx.erl b/lib/observer/src/observer_wx.erl
index dea7e07db0..321f189fc9 100644
--- a/lib/observer/src/observer_wx.erl
+++ b/lib/observer/src/observer_wx.erl
@@ -752,7 +752,7 @@ get_nodes() ->
{ok, Names} -> epmd_nodes(Names)
end
++
- nodes(connected)
+ [node() | nodes(connected)]
end,
Nodes = lists:usort(Nodes0),
WarningText = "WARNING: connecting to non-erlang nodes may crash them",
@@ -764,7 +764,28 @@ get_nodes() ->
end, {1, []}, Nodes),
{Nodes, lists:reverse(Menues)}.
-epmd_nodes(Names) ->
+%% see erl_epmd:(listen_)port_please/2
+erl_dist_port() ->
+ try
+ erl_epmd = net_kernel:epmd_module(),
+ {ok, [[StringPort]]} = init:get_argument(erl_epmd_port),
+ list_to_integer(StringPort)
+ catch
+ _:_ ->
+ undefined
+ end.
+
+%% If the default epmd module erl_epmd is used and erl_epmd_port is
+%% set to `DistPort' then it is only possible to connect to the node
+%% listening on DistPort (if any), so exclude other nodes registered
+%% in EPMD
+epmd_nodes(Names0) ->
+ Names = case erl_dist_port() of
+ undefined ->
+ Names0;
+ DistPort ->
+ [NP || NP = {_, Port} <- Names0, Port =:= DistPort]
+ end,
[_, Host] = string:lexemes(atom_to_list(node()),"@"),
[list_to_atom(Name ++ [$@|Host]) || {Name, _} <- Names].
--
2.35.3