summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/httpd/proc.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/usr.sbin/httpd/proc.c b/usr.sbin/httpd/proc.c
index bc7f3637c7b..e595aafaa50 100644
--- a/usr.sbin/httpd/proc.c
+++ b/usr.sbin/httpd/proc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: proc.c,v 1.31 2016/10/10 11:13:48 rzalamena Exp $ */
+/* $OpenBSD: proc.c,v 1.32 2016/10/10 16:31:35 rzalamena Exp $ */
/*
* Copyright (c) 2010 - 2016 Reyk Floeter <reyk@openbsd.org>
@@ -620,8 +620,14 @@ proc_dispatch(int fd, short event, void *arg)
}
if (event & EV_WRITE) {
- if (msgbuf_write(&ibuf->w) <= 0 && errno != EAGAIN)
+ if ((n = msgbuf_write(&ibuf->w)) == -1 && errno != EAGAIN)
fatal("%s: msgbuf_write", __func__);
+ if (n == 0) {
+ /* this pipe is dead, so remove the event handler */
+ event_del(&iev->ev);
+ event_loopexit(NULL);
+ return;
+ }
}
for (;;) {