diff options
Diffstat (limited to 'usr.sbin/smtpd/mproc.c')
| -rw-r--r-- | usr.sbin/smtpd/mproc.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/usr.sbin/smtpd/mproc.c b/usr.sbin/smtpd/mproc.c index b37cfe8be08..0ca56245c80 100644 --- a/usr.sbin/smtpd/mproc.c +++ b/usr.sbin/smtpd/mproc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mproc.c,v 1.1 2013/01/26 09:37:23 gilles Exp $ */ +/* $OpenBSD: mproc.c,v 1.2 2013/01/31 18:34:43 eric Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@faurot.net> @@ -171,8 +171,11 @@ mproc_dispatch(int fd, short event, void *arg) } for (;;) { - if ((n = imsg_get(&p->imsgbuf, &imsg)) == -1) - fatal("imsg_get"); + if ((n = imsg_get(&p->imsgbuf, &imsg)) == -1) { + log_warn("fatal: %s: error in imsg_get for %s", + proc_name(smtpd_process), p->name); + fatalx(NULL); + } if (n == 0) break; @@ -316,11 +319,11 @@ m_create(struct mproc *p, uint32_t type, uint32_t peerid, pid_t pid, int fd, reqlen = len; p->ibuf = imsg_create(&p->imsgbuf, type, peerid, pid, len); - /* Is this a problem with imsg? */ - p->ibuf->fd = fd; - if (p->ibuf == NULL) fatal("imsg_create"); + + /* Is this a problem with imsg? */ + p->ibuf->fd = fd; } void @@ -346,6 +349,12 @@ m_close(struct mproc *p) proc_name(smtpd_process), proc_name(p->proc), imsg_to_str(reqtype)); + else if (verbose & TRACE_IMSGSIZE) + log_debug("msg-len: ok %zu : %s -> %s : %s", + p->ibuf->wpos - IMSG_HEADER_SIZE, + proc_name(smtpd_process), + proc_name(p->proc), + imsg_to_str(reqtype)); p->msg_out += 1; p->bytes_queued += p->ibuf->wpos; |
