summaryrefslogtreecommitdiff
path: root/monitor.c
diff options
context:
space:
mode:
Diffstat (limited to 'monitor.c')
-rw-r--r--monitor.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/monitor.c b/monitor.c
index 36f9a6c20..700925c8c 100644
--- a/monitor.c
+++ b/monitor.c
@@ -25,7 +25,7 @@
25 */ 25 */
26 26
27#include "includes.h" 27#include "includes.h"
28RCSID("$OpenBSD: monitor.c,v 1.39 2003/05/14 02:15:47 markus Exp $"); 28RCSID("$OpenBSD: monitor.c,v 1.40 2003/05/14 08:57:49 markus Exp $");
29 29
30#include <openssl/dh.h> 30#include <openssl/dh.h>
31 31
@@ -143,6 +143,7 @@ static char *hostbased_chost = NULL;
143static char *auth_method = "unknown"; 143static char *auth_method = "unknown";
144static int session_id2_len = 0; 144static int session_id2_len = 0;
145static u_char *session_id2 = NULL; 145static u_char *session_id2 = NULL;
146static pid_t monitor_child_pid;
146 147
147struct mon_table { 148struct mon_table {
148 enum monitor_reqtype type; 149 enum monitor_reqtype type;
@@ -321,9 +322,25 @@ monitor_child_preauth(struct monitor *pmonitor)
321 return (authctxt); 322 return (authctxt);
322} 323}
323 324
325static void
326monitor_set_child_handler(pid_t pid)
327{
328 monitor_child_pid = pid;
329}
330
331static void
332monitor_child_handler(int signal)
333{
334 kill(monitor_child_pid, signal);
335}
336
324void 337void
325monitor_child_postauth(struct monitor *pmonitor) 338monitor_child_postauth(struct monitor *pmonitor)
326{ 339{
340 monitor_set_child_handler(pmonitor->m_pid);
341 signal(SIGHUP, &monitor_child_handler);
342 signal(SIGTERM, &monitor_child_handler);
343
327 if (compat20) { 344 if (compat20) {
328 mon_dispatch = mon_dispatch_postauth20; 345 mon_dispatch = mon_dispatch_postauth20;
329 346