diff options
Diffstat (limited to 'usr.sbin/smtpd/control.c')
| -rw-r--r-- | usr.sbin/smtpd/control.c | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/usr.sbin/smtpd/control.c b/usr.sbin/smtpd/control.c index 72554b51013..f5ea8296c75 100644 --- a/usr.sbin/smtpd/control.c +++ b/usr.sbin/smtpd/control.c @@ -1,4 +1,4 @@ -/* $OpenBSD: control.c,v 1.116 2016/09/04 16:10:31 eric Exp $ */ +/* $OpenBSD: control.c,v 1.117 2016/09/08 12:06:43 eric Exp $ */ /* * Copyright (c) 2012 Gilles Chehade <gilles@poolp.org> @@ -63,7 +63,6 @@ static void control_shutdown(void); static void control_listen(void); static void control_accept(int, short, void *); static void control_close(struct ctl_conn *); -static void control_sig_handler(int, short, void *); static void control_dispatch_ext(struct mproc *, struct imsg *); static void control_digest_update(const char *, size_t, int); static void control_broadcast_verbose(int, int); @@ -89,6 +88,12 @@ control_imsg(struct mproc *p, struct imsg *imsg) const void *data; size_t sz; + if (imsg == NULL) { + if (p->proc != PROC_CLIENT) + control_shutdown(); + return; + } + if (p->proc == PROC_PONY) { switch (imsg->hdr.type) { case IMSG_CTL_SMTP_SESSION: @@ -186,19 +191,6 @@ control_imsg(struct mproc *p, struct imsg *imsg) imsg_to_str(imsg->hdr.type)); } -static void -control_sig_handler(int sig, short event, void *p) -{ - switch (sig) { - case SIGINT: - case SIGTERM: - control_shutdown(); - break; - default: - fatalx("control_sig_handler: unexpected signal"); - } -} - int control_create_socket(void) { @@ -245,8 +237,6 @@ int control(void) { struct passwd *pw; - struct event ev_sigint; - struct event ev_sigterm; purge_config(PURGE_EVERYTHING); @@ -271,10 +261,8 @@ control(void) imsg_callback = control_imsg; event_init(); - signal_set(&ev_sigint, SIGINT, control_sig_handler, NULL); - signal_set(&ev_sigterm, SIGTERM, control_sig_handler, NULL); - signal_add(&ev_sigint, NULL); - signal_add(&ev_sigterm, NULL); + signal(SIGINT, SIG_IGN); + signal(SIGTERM, SIG_IGN); signal(SIGPIPE, SIG_IGN); signal(SIGHUP, SIG_IGN); @@ -305,7 +293,7 @@ control(void) static void control_shutdown(void) { - log_info("info: control process exiting"); + log_debug("debug: control agent exiting"); _exit(0); } |
