diff options
Diffstat (limited to 'httpd/control.c')
-rw-r--r-- | httpd/control.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/httpd/control.c b/httpd/control.c index c29cd5b..7eea19a 100644 --- a/httpd/control.c +++ b/httpd/control.c @@ -1,4 +1,4 @@ -/* $OpenBSD: control.c,v 1.9 2015/12/05 13:15:27 claudio Exp $ */ +/* $OpenBSD: control.c,v 1.13 2017/01/09 14:49:22 reyk Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> @@ -181,9 +181,10 @@ control_connbyfd(int fd) { struct ctl_conn *c; - for (c = TAILQ_FIRST(&ctl_conns); c != NULL && c->iev.ibuf.fd != fd; - c = TAILQ_NEXT(c, entry)) - ; /* nothing */ + TAILQ_FOREACH(c, &ctl_conns, entry) { + if (c->iev.ibuf.fd == fd) + break; + } return (c); } @@ -273,7 +274,8 @@ control_dispatch_imsg(int fd, short event, void *arg) "client requested notify more than once", __func__); imsg_compose_event(&c->iev, IMSG_CTL_FAIL, - 0, 0, -1, NULL, 0); + 0, env->sc_ps->ps_instance + 1, -1, + NULL, 0); break; } c->flags |= CTL_CONN_NOTIFY; @@ -287,8 +289,8 @@ control_dispatch_imsg(int fd, short event, void *arg) proc_forward_imsg(env->sc_ps, &imsg, PROC_SERVER, -1); memcpy(imsg.data, &verbose, sizeof(verbose)); - control_imsg_forward(&imsg); - log_verbose(verbose); + control_imsg_forward(env->sc_ps, &imsg); + log_setverbose(verbose); break; default: log_debug("%s: error handling imsg %d", @@ -302,13 +304,13 @@ control_dispatch_imsg(int fd, short event, void *arg) } void -control_imsg_forward(struct imsg *imsg) +control_imsg_forward(struct privsep *ps, struct imsg *imsg) { struct ctl_conn *c; TAILQ_FOREACH(c, &ctl_conns, entry) if (c->flags & CTL_CONN_NOTIFY) imsg_compose_event(&c->iev, imsg->hdr.type, - 0, imsg->hdr.pid, -1, imsg->data, + 0, ps->ps_instance + 1, -1, imsg->data, imsg->hdr.len - IMSG_HEADER_SIZE); } |