[openssh-commits] [openssh] 06/06: upstream: SIGINFO handler for sshd(8) to dump active
git+noreply at mindrot.org
git+noreply at mindrot.org
Mon Aug 18 13:56:52 AEST 2025
This is an automated email from the git hooks/post-receive script.
djm pushed a commit to branch master
in repository openssh.
commit dc5147028ff19213a32281dad07bba02e58da3fa
Author: djm at openbsd.org <djm at openbsd.org>
AuthorDate: Mon Aug 18 03:29:11 2025 +0000
upstream: SIGINFO handler for sshd(8) to dump active
channels/sessions ok deraadt@
OpenBSD-Commit-ID: 9955cb6d157c6d7aa23a819e8ef61b1edabc8b7d
---
serverloop.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/serverloop.c b/serverloop.c
index 40ddfb042..dc9628874 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: serverloop.c,v 1.241 2024/11/26 22:01:37 djm Exp $ */
+/* $OpenBSD: serverloop.c,v 1.242 2025/08/18 03:29:11 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo at cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
@@ -89,7 +89,8 @@ extern struct sshauthopt *auth_opts;
static int no_more_sessions = 0; /* Disallow further sessions. */
-static volatile sig_atomic_t child_terminated = 0; /* The child has terminated. */
+static volatile sig_atomic_t child_terminated = 0; /* set on SIGCHLD */
+static volatile sig_atomic_t siginfo_received = 0;
/* prototypes */
static void server_init_dispatch(struct ssh *);
@@ -103,6 +104,12 @@ sigchld_handler(int sig)
child_terminated = 1;
}
+static void
+siginfo_handler(int sig)
+{
+ siginfo_received = 1;
+}
+
static void
client_alive_check(struct ssh *ssh)
{
@@ -326,9 +333,12 @@ server_loop2(struct ssh *ssh, Authctxt *authctxt)
debug("Entering interactive session for SSH2.");
- if (sigemptyset(&bsigset) == -1 || sigaddset(&bsigset, SIGCHLD) == -1)
+ if (sigemptyset(&bsigset) == -1 ||
+ sigaddset(&bsigset, SIGCHLD) == -1 ||
+ sigaddset(&bsigset, SIGINFO) == -1)
error_f("bsigset setup: %s", strerror(errno));
ssh_signal(SIGCHLD, sigchld_handler);
+ ssh_signal(SIGINFO, siginfo_handler);
child_terminated = 0;
connection_in = ssh_packet_get_connection_in(ssh);
connection_out = ssh_packet_get_connection_out(ssh);
@@ -350,6 +360,10 @@ server_loop2(struct ssh *ssh, Authctxt *authctxt)
if (sigprocmask(SIG_BLOCK, &bsigset, &osigset) == -1)
error_f("bsigset sigprocmask: %s", strerror(errno));
collect_children(ssh);
+ if (siginfo_received) {
+ siginfo_received = 0;
+ channel_report_open(ssh, SYSLOG_LEVEL_INFO);
+ }
wait_until_can_do_something(ssh, connection_in, connection_out,
&pfd, &npfd_alloc, &npfd_active, &osigset,
&conn_in_ready, &conn_out_ready);
--
To stop receiving notification emails like this one, please contact
djm at mindrot.org.
More information about the openssh-commits
mailing list