summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhenning <henning@openbsd.org>2004-11-28 20:09:47 +0000
committerhenning <henning@openbsd.org>2004-11-28 20:09:47 +0000
commit4a5b429c6feb3bb20930b7df88436671557a458f (patch)
tree64917c43425df3763e33d50b810ac968878e3aa5
parentbump version (diff)
downloadwireguard-openbsd-4a5b429c6feb3bb20930b7df88436671557a458f.tar.xz
wireguard-openbsd-4a5b429c6feb3bb20930b7df88436671557a458f.zip
slave_pid -1 by default, not 0, and reset to -1 when it goes away, with theo
-rw-r--r--libexec/ftpd/monitor.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/libexec/ftpd/monitor.c b/libexec/ftpd/monitor.c
index d0c06b4b3cb..ef4157238e4 100644
--- a/libexec/ftpd/monitor.c
+++ b/libexec/ftpd/monitor.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: monitor.c,v 1.2 2004/11/28 19:12:31 henning Exp $ */
+/* $OpenBSD: monitor.c,v 1.3 2004/11/28 20:09:47 henning Exp $ */
/*
* Copyright (c) 2004 Moritz Jodeit <moritz@jodeit.org>
@@ -58,7 +58,7 @@ extern void set_slave_signals(void);
int fd_monitor = -1;
int fd_slave = -1;
int nullfd;
-pid_t slave_pid;
+pid_t slave_pid = -1;
enum monitor_state state = PREAUTH;
volatile sig_atomic_t quit = 0;
@@ -380,7 +380,7 @@ sig_pass_to_slave(int signo)
{
int olderrno = errno;
- if (slave_pid != 0)
+ if (slave_pid > 0)
kill(slave_pid, signo);
errno = olderrno;
@@ -397,8 +397,10 @@ sig_chld(int signo)
pid = waitpid(-1, &stat, WNOHANG);
} while (pid == -1 && errno == EINTR);
- if (pid == slave_pid && stat != PREAUTH_SLAVE_DIED)
+ if (pid == slave_pid && stat != PREAUTH_SLAVE_DIED) {
quit = 1;
+ slave_pid = -1;
+ }
errno = olderrno;
}
@@ -406,7 +408,7 @@ sig_chld(int signo)
void
kill_slave(void)
{
- if (slave_pid != 0)
+ if (slave_pid > 0)
kill(slave_pid, SIGQUIT);
}