File 3751-ssh-set_label-for-processes.patch of Package erlang

From 409396bcd4941e61216929950780655511930ac9 Mon Sep 17 00:00:00 2001
From: Jakub Witczak <kuba@erlang.org>
Date: Mon, 11 Mar 2024 11:38:35 +0100
Subject: [PATCH] ssh: set_label for processes

---
 lib/ssh/src/ssh.app.src                        |  2 +-
 lib/ssh/src/ssh_acceptor.erl                   |  3 +++
 lib/ssh/src/ssh_acceptor_sup.erl               |  1 +
 lib/ssh/src/ssh_channel_sup.erl                |  1 +
 lib/ssh/src/ssh_connection_handler.erl         |  3 +++
 lib/ssh/src/ssh_lib.erl                        | 12 +++++++++++-
 lib/ssh/src/ssh_subsystem_sup.erl              |  1 +
 lib/ssh/src/ssh_system_sup.erl                 |  1 +
 lib/ssh/src/ssh_tcpip_forward_acceptor_sup.erl |  1 +
 9 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/lib/ssh/src/ssh.app.src b/lib/ssh/src/ssh.app.src
index fedd05e350..588ac5e9e5 100644
--- a/lib/ssh/src/ssh.app.src
+++ b/lib/ssh/src/ssh.app.src
@@ -62,6 +62,6 @@
 			  "erts-14.0",
 			  "kernel-9.0",
 			  "public_key-1.6.1",
-                          "stdlib-5.0","stdlib-5.0",
+                          "stdlib-5.2","stdlib-5.0",
                           "runtime_tools-1.15.1"
 			 ]}]}.
diff --git a/lib/ssh/src/ssh_acceptor.erl b/lib/ssh/src/ssh_acceptor.erl
index 80df3c376f..3740694bba 100644
--- a/lib/ssh/src/ssh_acceptor.erl
+++ b/lib/ssh/src/ssh_acceptor.erl
@@ -74,6 +74,9 @@ close(Socket, Options) ->
 acceptor_init(Parent, SystemSup,
               #address{address=Address, port=Port, profile=_Profile},
               Opts) ->
+    ssh_lib:set_label(server,
+                      {acceptor,
+                       list_to_binary(ssh_lib:format_address_port(Address, Port))}),
     AcceptTimeout = ?GET_INTERNAL_OPT(timeout, Opts, ?DEFAULT_TIMEOUT),
     case ?GET_INTERNAL_OPT(lsocket, Opts, undefined) of
         {LSock, SockOwner} ->
diff --git a/lib/ssh/src/ssh_acceptor_sup.erl b/lib/ssh/src/ssh_acceptor_sup.erl
index 2898a62061..1661134285 100644
--- a/lib/ssh/src/ssh_acceptor_sup.erl
+++ b/lib/ssh/src/ssh_acceptor_sup.erl
@@ -55,6 +55,7 @@ restart_child(AccSup, Address) ->
 %%%  Supervisor callback
 %%%=========================================================================
 init([SystemSup, Address, Options]) ->
+    ssh_lib:set_label(server, acceptor_sup),
     %% Initial start of ssh_acceptor_sup for this port
     SupFlags = #{strategy  => one_for_one, 
                  intensity =>   10,
diff --git a/lib/ssh/src/ssh_channel_sup.erl b/lib/ssh/src/ssh_channel_sup.erl
index a56855fe01..2e36574022 100644
--- a/lib/ssh/src/ssh_channel_sup.erl
+++ b/lib/ssh/src/ssh_channel_sup.erl
@@ -56,6 +56,7 @@ start_child(server, ChannelSup, ConnRef, Callback, Id, Args, Exec, Opts) when is
 %%%  Supervisor callback
 %%%=========================================================================
 init(_Args) ->
+    ssh_lib:set_label(channel_sup),
     RestartStrategy = one_for_one,
     MaxR = 10,
     MaxT = 3600,
diff --git a/lib/ssh/src/ssh_connection_handler.erl b/lib/ssh/src/ssh_connection_handler.erl
index 42f0426c12..d39ca05ea2 100644
--- a/lib/ssh/src/ssh_connection_handler.erl
+++ b/lib/ssh/src/ssh_connection_handler.erl
@@ -459,6 +459,8 @@ init_ssh_record(Role, Socket, PeerAddr, Opts) ->
                            PeerName0 when is_list(PeerName0) ->
                                PeerName0
                        end,
+            ssh_lib:set_label(client,
+                              {connection, list_to_binary(PeerName), Socket}),
             S1 =
                 S0#ssh{c_vsn = Vsn,
                        c_version = Version,
@@ -477,6 +479,7 @@ init_ssh_record(Role, Socket, PeerAddr, Opts) ->
                   };
 
 	server ->
+            ssh_lib:set_label(server, {connection, Socket}),
 	    S0#ssh{s_vsn = Vsn,
 		   s_version = Version,
 		   userauth_methods = string:tokens(AuthMethods, ","),
diff --git a/lib/ssh/src/ssh_connection_sup.erl b/lib/ssh/src/ssh_connection_sup.erl
index 90ce8afbdb..2a24cb667b 100644
--- a/lib/ssh/src/ssh_connection_sup.erl
+++ b/lib/ssh/src/ssh_connection_sup.erl
@@ -59,6 +59,7 @@ tcpip_fwd_supervisor(SubSysSup) ->
 %%%  Supervisor callback
 %%%=========================================================================
 init([Role, Id, Socket, Options]) ->
+    ssh_lib:set_label(Role, {connection_sup, Socket}),
     ConnectionSup = self(),
     SupFlags = #{strategy      => one_for_all,
                  auto_shutdown => any_significant,
diff --git a/lib/ssh/src/ssh_lib.erl b/lib/ssh/src/ssh_lib.erl
index a1020245c9..762bc3eb56 100644
--- a/lib/ssh/src/ssh_lib.erl
+++ b/lib/ssh/src/ssh_lib.erl
@@ -29,6 +29,8 @@
          format_address/1,
          format_time_ms/1,
          comp/2,
+         set_label/1,
+         set_label/2,
          trim_reason/1,
          max_log_len/1
         ]).
@@ -87,6 +89,15 @@ comp([], [], Truth) ->
 
 comp(_, _, _) ->
     false.
+
+set_label(Details) ->
+    proc_lib:set_label({ssh, Details}).
+
+set_label(client, Details) ->
+    proc_lib:set_label({sshc, Details});
+set_label(server, Details) ->
+    proc_lib:set_label({sshd, Details}).
+
 %% We don't want to process badmatch details, potentially containing
 %% malicious data of unknown size
 trim_reason({badmatch, V}) when is_binary(V) ->
diff --git a/lib/ssh/src/ssh_system_sup.erl b/lib/ssh/src/ssh_system_sup.erl
index 9e31575685..91da0b4aed 100644
--- a/lib/ssh/src/ssh_system_sup.erl
+++ b/lib/ssh/src/ssh_system_sup.erl
@@ -178,6 +178,7 @@ replace_acceptor_options(SysPid, NewOpts) ->
 %%%  Supervisor callback
 %%%=========================================================================
 init([Role, Address, Options]) ->
+    ssh_lib:set_label(Role, system_sup),
     SupFlags = #{strategy      => one_for_one,
                  auto_shutdown => all_significant,
                  intensity =>    0,
diff --git a/lib/ssh/src/ssh_tcpip_forward_acceptor_sup.erl b/lib/ssh/src/ssh_tcpip_forward_acceptor_sup.erl
index fe290aeba0..5cd3fcaf49 100644
--- a/lib/ssh/src/ssh_tcpip_forward_acceptor_sup.erl
+++ b/lib/ssh/src/ssh_tcpip_forward_acceptor_sup.erl
@@ -52,6 +52,7 @@ start_child(Sup, LSock, ListenAddr, ConnectToAddr, ChanType, ChanCB, ConnPid) ->
 %%%  Supervisor callback
 %%%=========================================================================
 init([]) ->
+    ssh_lib:set_label(tcpip_fw_acceptor_sup),
     SupFlags = #{strategy  => one_for_one, 
                  intensity =>   10,
                  period    => 3600
-- 
2.43.0

openSUSE Build Service is sponsored by