Commit Diff


commit - e7965818e16df6d5a47fdfeb7753c447c80677a9
commit + 7ab7287f2568cf0384497707d95581957ec29e56
blob - 62ee3f233848926a8339815fd7b77d6040821c55
blob + 5c4ddf7a18b062babdc0a2473f7c73053daf77cc
--- control.c
+++ control.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: control.c,v 1.16 2024/11/21 13:10:36 claudio Exp $	*/
+/*	$OpenBSD: control.c,v 1.17 2024/11/21 13:16:07 claudio Exp $	*/
 
 /*
  * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -237,7 +237,7 @@ control_dispatch_imsg(int fd, short event, void *arg)
 	}
 
 	if (event & EV_WRITE) {
-		if (imsg_write(&c->iev.ibuf) <= 0 && errno != EAGAIN) {
+		if (imsg_write(&c->iev.ibuf) == -1) {
 			control_close(fd, cs);
 			return;
 		}
blob - 7bd184c784154ee1cdc85b0c0ded523f866e4652
blob + 49fc73e7f63830434cab260f509615c20f7d659e
--- proc.c
+++ proc.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: proc.c,v 1.47 2024/11/21 13:10:36 claudio Exp $	*/
+/*	$OpenBSD: proc.c,v 1.48 2024/11/21 13:16:07 claudio Exp $	*/
 
 /*
  * Copyright (c) 2010 - 2016 Reyk Floeter <reyk@openbsd.org>
@@ -611,13 +611,14 @@ proc_dispatch(int fd, short event, void *arg)
 	}
 
 	if (event & EV_WRITE) {
-		if ((n = imsg_write(ibuf)) == -1 && errno != EAGAIN)
-			fatal("%s: imsg_write", __func__);
-		if (n == 0) {
-			/* this pipe is dead, so remove the event handler */
-			event_del(&iev->ev);
-			event_loopexit(NULL);
-			return;
+		if (imsg_write(ibuf) == -1) {
+			if (errno == EPIPE) {	/* connection closed */
+				/* remove the event handler */
+				event_del(&iev->ev);
+				event_loopexit(NULL);
+				return;
+			} else
+				fatal("%s: imsg_write", __func__);
 		}
 	}