Index | Thread | Search

From:
Claudio Jeker <claudio@openbsd.org>
Subject:
Re: libutil: fix amused, gelatod, openmdns, pfresolved, telescope, thingsd
To:
Theo Buehler <tb@theobuehler.org>
Cc:
ports@openbsd.org, kn@openbsd.org, gonzalo@openbsd.org, bluhm@openbsd.org, op@openbsd.org, tracey@openbsd.org
Date:
Mon, 7 Sep 2026 06:44:23 +0200

Download raw body.

Thread
On Mon, Sep 07, 2026 at 06:37:16AM +0200, Theo Buehler wrote:
> This diff addresses the remaining fallout from the libutil bump.
> 
> imsgbuf_get() does the same thing as the now removed imsg_get() except
> that it doesn't have a special return value != -1, 0 and its return type
> is an int, not a ssize_t.
> 
> None of these ports looks at this special value, so all the calls can
> just be replaced.

Thanks for beating me to it. All the diffs look OK to me.
 
> diff --git a/audio/amused/patches/patch-amused_c b/audio/amused/patches/patch-amused_c
> new file mode 100644
> index 00000000000..f731758a4d7
> --- /dev/null
> +++ b/audio/amused/patches/patch-amused_c
> @@ -0,0 +1,14 @@
> +Index: amused.c
> +--- amused.c.orig
> ++++ amused.c
> +@@ -123,8 +123,8 @@ main_dispatch_player(int sig, int event, void *d)
> + 	}
> + 
> + 	for (;;) {
> +-		if ((n = imsg_get(imsgbuf, &imsg)) == -1)
> +-			fatal("imsg_get");
> ++		if ((n = imsgbuf_get(imsgbuf, &imsg)) == -1)
> ++			fatal("imsgbuf_get");
> + 		if (n == 0)	/* No more messages. */
> + 			break;
> + 
> diff --git a/audio/amused/patches/patch-control_c b/audio/amused/patches/patch-control_c
> new file mode 100644
> index 00000000000..988c138cb97
> --- /dev/null
> +++ b/audio/amused/patches/patch-control_c
> @@ -0,0 +1,23 @@
> +Index: control.c
> +--- control.c.orig
> ++++ control.c
> +@@ -279,8 +279,8 @@ control_dispatch_imsg(int fd, int event, void *bula)
> + 	struct imsg		 imsg;
> + 	struct player_mode	 mode;
> + 	struct player_seek	 seek;
> +-	ssize_t		 	 n, off;
> +-	int			 type, all;
> ++	ssize_t		 	 off;
> ++	int			 n, type, all;
> + 
> + 	if ((c = control_connbyfd(fd)) == NULL) {
> + 		log_warnx("%s: fd %d: not found", __func__, fd);
> +@@ -304,7 +304,7 @@ control_dispatch_imsg(int fd, int event, void *bula)
> + 	}
> + 
> + 	for (;;) {
> +-		if ((n = imsg_get(imsgbuf, &imsg)) == -1) {
> ++		if ((n = imsgbuf_get(imsgbuf, &imsg)) == -1) {
> + 			control_close(fd);
> + 			return;
> + 		}
> diff --git a/audio/amused/patches/patch-ctl_c b/audio/amused/patches/patch-ctl_c
> new file mode 100644
> index 00000000000..3e4c275f7cc
> --- /dev/null
> +++ b/audio/amused/patches/patch-ctl_c
> @@ -0,0 +1,24 @@
> +Index: ctl.c
> +--- ctl.c.orig
> ++++ ctl.c
> +@@ -417,8 +417,7 @@ ctlaction(struct parse_result *res)
> + 	struct imsg imsg;
> + 	struct player_status ps;
> + 	struct player_event ev;
> +-	ssize_t n;
> +-	int i, type, ret = 0, done = 1;
> ++	int i, n, type, ret = 0, done = 1;
> + 
> + 	if (pledge("stdio", NULL) == -1)
> + 		fatal("pledge");
> +@@ -544,8 +543,8 @@ ctlaction(struct parse_result *res)
> + 			fatalx("pipe closed");
> + 
> + 		while (!done) {
> +-			if ((n = imsg_get(imsgbuf, &imsg)) == -1)
> +-				fatalx("imsg_get error");
> ++			if ((n = imsgbuf_get(imsgbuf, &imsg)) == -1)
> ++				fatalx("imsgbuf_get error");
> + 			if (n == 0)
> + 				break;
> + 
> diff --git a/audio/amused/patches/patch-mpris2_mpris2_c b/audio/amused/patches/patch-mpris2_mpris2_c
> new file mode 100644
> index 00000000000..cf6a8c6535a
> --- /dev/null
> +++ b/audio/amused/patches/patch-mpris2_mpris2_c
> @@ -0,0 +1,23 @@
> +Index: mpris2/mpris2.c
> +--- mpris2/mpris2.c.orig
> ++++ mpris2/mpris2.c
> +@@ -456,7 +456,7 @@ imsg_dispatch(GIOChannel *chan, GIOCondition cond, gpo
> + 	struct imsg		 imsg;
> + 	struct ibuf		 ibuf;
> + 	struct player_event	 event;
> +-	ssize_t			 n;
> ++	int			 n;
> + 	size_t			 datalen;
> + 	const char		*msg;
> + 	char			 sha1buf[SHA1_DIGEST_STRING_LENGTH];
> +@@ -467,8 +467,8 @@ imsg_dispatch(GIOChannel *chan, GIOCondition cond, gpo
> + 		fatalx("pipe closed");
> + 
> + 	for (;;) {
> +-		if ((n = imsg_get(imsgbuf, &imsg)) == -1)
> +-			fatal("imsg_get");
> ++		if ((n = imsgbuf_get(imsgbuf, &imsg)) == -1)
> ++			fatal("imsgbuf_get");
> + 		if (n == 0)
> + 			break;
> + 
> diff --git a/audio/amused/patches/patch-player_c b/audio/amused/patches/patch-player_c
> new file mode 100644
> index 00000000000..0cca2f46a5c
> --- /dev/null
> +++ b/audio/amused/patches/patch-player_c
> @@ -0,0 +1,22 @@
> +Index: player.c
> +--- player.c.orig
> ++++ player.c
> +@@ -114,15 +114,14 @@ player_dispatch(int64_t *s, int wait)
> + 	struct player_seek seek;
> + 	struct pollfd	pfd;
> + 	struct imsg	imsg;
> +-	ssize_t		n;
> +-	int		ret;
> ++	int		n, ret;
> + 
> + 	if (halted != 0)
> + 		return IMSG_STOP;
> + 
> + again:
> +-	if ((n = imsg_get(imsgbuf, &imsg)) == -1)
> +-		fatal("imsg_get");
> ++	if ((n = imsgbuf_get(imsgbuf, &imsg)) == -1)
> ++		fatal("imsgbuf_get");
> + 	if (n == 0) {
> + 		if (!wait)
> + 			return -1;
> diff --git a/audio/amused/patches/patch-web_web_c b/audio/amused/patches/patch-web_web_c
> new file mode 100644
> index 00000000000..aecca1d8dea
> --- /dev/null
> +++ b/audio/amused/patches/patch-web_web_c
> @@ -0,0 +1,25 @@
> +Index: web/web.c
> +--- web/web.c.orig
> ++++ web/web.c
> +@@ -470,9 +470,8 @@ imsg_dispatch(int fd, int ev, void *d)
> + 	struct player_status	 ps;
> + 	struct player_event	 event;
> + 	const char		*msg;
> +-	ssize_t			 n;
> + 	size_t			 datalen;
> +-	int			 r;
> ++	int			 n, r;
> + 
> + 	if (ev & EV_READ) {
> + 		if ((n = imsgbuf_read(&imsgbuf)) == -1)
> +@@ -486,8 +485,8 @@ imsg_dispatch(int fd, int ev, void *d)
> + 	}
> + 
> + 	for (;;) {
> +-		if ((n = imsg_get(&imsgbuf, &imsg)) == -1)
> +-			fatal("imsg_get");
> ++		if ((n = imsgbuf_get(&imsgbuf, &imsg)) == -1)
> ++			fatal("imsgbuf_get");
> + 		if (n == 0)
> + 			break;
> + 
> diff --git a/net/gelatod/patches/patch-frontend_c b/net/gelatod/patches/patch-frontend_c
> new file mode 100644
> index 00000000000..9cf6e33b7ce
> --- /dev/null
> +++ b/net/gelatod/patches/patch-frontend_c
> @@ -0,0 +1,24 @@
> +Index: frontend.c
> +--- frontend.c.orig
> ++++ frontend.c
> +@@ -364,8 +364,7 @@ frontend_dispatch_main(int fd, short event, void *bula
> + 	struct imsg		 imsg;
> + 	struct imsgev		*iev = bula;
> + 	struct imsgbuf		*ibuf = &iev->ibuf;
> +-	ssize_t			 n;
> +-	int			 shut = 0;
> ++	int			 n, shut = 0;
> + 
> + 	if (event & EV_READ) {
> + 		if ((n = imsgbuf_read(ibuf)) == -1)
> +@@ -383,8 +382,8 @@ frontend_dispatch_main(int fd, short event, void *bula
> + 	}
> + 
> + 	for (;;) {
> +-		if ((n = imsg_get(ibuf, &imsg)) == -1)
> +-			fatal("%s: imsg_get error", __func__);
> ++		if ((n = imsgbuf_get(ibuf, &imsg)) == -1)
> ++			fatal("%s: imsgbuf_get error", __func__);
> + 		if (n == 0)	/* No more messages. */
> + 			break;
> + 
> diff --git a/net/gelatod/patches/patch-gelatod_c b/net/gelatod/patches/patch-gelatod_c
> new file mode 100644
> index 00000000000..d1281d0b667
> --- /dev/null
> +++ b/net/gelatod/patches/patch-gelatod_c
> @@ -0,0 +1,24 @@
> +Index: gelatod.c
> +--- gelatod.c.orig
> ++++ gelatod.c
> +@@ -308,8 +308,7 @@ main_dispatch_frontend(int fd, short event, void *bula
> + 	struct imsgbuf		*ibuf;
> + 	struct imsg		 imsg;
> + 	struct clat_imsg	 clat_imsg;
> +-	ssize_t			 n;
> +-	int			 shut = 0;
> ++	int			 n, shut = 0;
> + 
> + 	ibuf = &iev->ibuf;
> + 
> +@@ -329,8 +328,8 @@ main_dispatch_frontend(int fd, short event, void *bula
> + 	}
> + 
> + 	for (;;) {
> +-		if ((n = imsg_get(ibuf, &imsg)) == -1)
> +-			fatal("imsg_get");
> ++		if ((n = imsgbuf_get(ibuf, &imsg)) == -1)
> ++			fatal("imsgbuf_get");
> + 		if (n == 0)	/* No more messages. */
> + 			break;
> + 
> diff --git a/net/openmdns/patches/patch-libmdns_mdnsl_c b/net/openmdns/patches/patch-libmdns_mdnsl_c
> index 78f9ca156b8..1476464a468 100644
> --- a/net/openmdns/patches/patch-libmdns_mdnsl_c
> +++ b/net/openmdns/patches/patch-libmdns_mdnsl_c
> @@ -22,7 +22,16 @@ Index: libmdns/mdnsl.c
>   }
>   
>   void
> -@@ -329,7 +330,7 @@ mdns_read(struct mdns *m)
> +@@ -321,21 +322,20 @@ mdns_service_init(struct mdns_service *ms, const char 
> + ssize_t
> + mdns_read(struct mdns *m)
> + {
> +-	int			ev;
> +-	size_t			r;
> ++	int			ev, r;
> + 	ssize_t			n;
> + 	struct imsg		imsg;
> + 	struct rr		rr;
>   	struct mdns_service	ms;
>   	char			groupname[MAXHOSTNAMELEN];
>   
> @@ -31,7 +40,14 @@ Index: libmdns/mdnsl.c
>   
>   	if (n == -1 || n == 0)
>   		return (n);
> -@@ -514,7 +515,7 @@ ibuf_send_imsg(struct imsgbuf *ibuf, u_int32_t type,
> + 
> + 	/* TODO call imsgctl_to_event() */
> +-	while ((r = imsg_get(&m->ibuf, &imsg)) > 0) {
> ++	while ((r = imsgbuf_get(&m->ibuf, &imsg)) > 0) {
> + 		switch (imsg.hdr.type) {
> + 		case IMSG_CTL_LOOKUP: /* FALLTHROUGH */
> + 		case IMSG_CTL_LOOKUP_FAILURE:
> +@@ -514,7 +514,7 @@ ibuf_send_imsg(struct imsgbuf *ibuf, u_int32_t type,
>   
>   	imsg_close(ibuf, wbuf);
>   
> diff --git a/net/openmdns/patches/patch-mdnsd_control_c b/net/openmdns/patches/patch-mdnsd_control_c
> index 2231d58b848..aea465c3d6d 100644
> --- a/net/openmdns/patches/patch-mdnsd_control_c
> +++ b/net/openmdns/patches/patch-mdnsd_control_c
> @@ -37,7 +37,16 @@ Index: mdnsd/control.c
>   	TAILQ_REMOVE(&ctl_conns, c, entry);
>   
>   	event_del(&c->iev.ev);
> -@@ -644,13 +651,13 @@ control_dispatch_imsg(int fd, short event, void *bula)
> +@@ -636,7 +643,7 @@ control_dispatch_imsg(int fd, short event, void *bula)
> + {
> + 	struct ctl_conn	*c;
> + 	struct imsg	 imsg;
> +-	ssize_t		 n;
> ++	int		 n;
> + 
> + 	if ((c = control_connbyfd(fd)) == NULL) {
> + 		log_warn("control_dispatch_imsg: fd %d: not found", fd);
> +@@ -644,20 +651,20 @@ control_dispatch_imsg(int fd, short event, void *bula)
>   	}
>   
>   	if (event & EV_READ) {
> @@ -53,3 +62,11 @@ Index: mdnsd/control.c
>   			control_close(fd);
>   			return;
>   		}
> + 	}
> + 
> + 	for (;;) {
> +-		if ((n = imsg_get(&c->iev.ibuf, &imsg)) == -1) {
> ++		if ((n = imsgbuf_get(&c->iev.ibuf, &imsg)) == -1) {
> + 			control_close(fd);
> + 			return;
> + 		}
> diff --git a/net/pfresolved/patches/patch-control_c b/net/pfresolved/patches/patch-control_c
> index 0f2fb8d24e5..167a1b20c80 100644
> --- a/net/pfresolved/patches/patch-control_c
> +++ b/net/pfresolved/patches/patch-control_c
> @@ -23,7 +23,7 @@ Index: control.c
>   	TAILQ_REMOVE(&ctl_conns, c, entry);
>   
>   	event_del(&c->iev.ev);
> -@@ -247,14 +251,13 @@ control_dispatch_imsg(int fd, short event, void *arg)
> +@@ -247,21 +251,20 @@ control_dispatch_imsg(int fd, short event, void *arg)
>   	}
>   
>   	if (event & EV_READ) {
> @@ -40,3 +40,11 @@ Index: control.c
>   			control_close(fd, cs);
>   			return;
>   		}
> + 	}
> + 
> + 	for (;;) {
> +-		if ((n = imsg_get(&c->iev.ibuf, &imsg)) == -1) {
> ++		if ((n = imsgbuf_get(&c->iev.ibuf, &imsg)) == -1) {
> + 			control_close(fd, cs);
> + 			return;
> + 		}
> diff --git a/net/pfresolved/patches/patch-pfresolvectl_pfresolvectl_c b/net/pfresolved/patches/patch-pfresolvectl_pfresolvectl_c
> index fedc9038ea2..4202c169acc 100644
> --- a/net/pfresolved/patches/patch-pfresolvectl_pfresolvectl_c
> +++ b/net/pfresolved/patches/patch-pfresolvectl_pfresolvectl_c
> @@ -11,7 +11,7 @@ Index: pfresolvectl/pfresolvectl.c
>   
>   	switch (res->action) {
>   	case NONE:
> -@@ -113,14 +114,14 @@ main(int argc, char **argv)
> +@@ -113,20 +114,20 @@ main(int argc, char **argv)
>   		break;
>   	}
>   
> @@ -31,3 +31,11 @@ Index: pfresolvectl/pfresolvectl.c
>   		if (n == 0)
>   			errx(1, "%s: pipe closed", __func__);
>   
> + 		while (!done) {
> +-			if ((n = imsg_get(ibuf, &imsg)) == -1)
> +-				errx(1, "%s: imsg_get error", __func__);
> ++			if ((n = imsgbuf_get(ibuf, &imsg)) == -1)
> ++				errx(1, "%s: imsgbuf_get error", __func__);
> + 			if (n == 0)
> + 				break;
> + 
> diff --git a/net/pfresolved/patches/patch-proc_c b/net/pfresolved/patches/patch-proc_c
> index c316b919498..a7486ff5e32 100644
> --- a/net/pfresolved/patches/patch-proc_c
> +++ b/net/pfresolved/patches/patch-proc_c
> @@ -33,7 +33,17 @@ Index: proc.c
>   			close(pp->pp_pipes[dst][n]);
>   			pp->pp_pipes[dst][n] = -1;
>   		}
> -@@ -753,8 +758,8 @@ proc_dispatch(int fd, short event, void *arg)
> +@@ -744,8 +749,7 @@ proc_dispatch(int fd, short event, void *arg)
> + 	struct privsep		*ps = p->p_ps;
> + 	struct imsgbuf		*ibuf;
> + 	struct imsg		 imsg;
> +-	ssize_t			 n;
> +-	int			 verbose;
> ++	int			 n, verbose;
> + 	const char		*title;
> + 	struct privsep_fd	 pf;
> + 
> +@@ -753,8 +757,8 @@ proc_dispatch(int fd, short event, void *arg)
>   	ibuf = &iev->ibuf;
>   
>   	if (event & EV_READ) {
> @@ -44,7 +54,7 @@ Index: proc.c
>   		if (n == 0) {
>   			/* this pipe is dead, so remove the event handler */
>   			event_del(&iev->ev);
> -@@ -764,13 +769,14 @@ proc_dispatch(int fd, short event, void *arg)
> +@@ -764,19 +768,20 @@ proc_dispatch(int fd, short event, void *arg)
>   	}
>   
>   	if (event & EV_WRITE) {
> @@ -66,7 +76,15 @@ Index: proc.c
>   		}
>   	}
>   
> -@@ -807,7 +813,7 @@ proc_dispatch(int fd, short event, void *arg)
> + 	for (;;) {
> +-		if ((n = imsg_get(ibuf, &imsg)) == -1)
> +-			fatal("%s: imsg_get", __func__);
> ++		if ((n = imsgbuf_get(ibuf, &imsg)) == -1)
> ++			fatal("%s: imsgbuf_get", __func__);
> + 		if (n == 0)
> + 			break;
> + 
> +@@ -807,7 +812,7 @@ proc_dispatch(int fd, short event, void *arg)
>   		case IMSG_CTL_PROCFD:
>   			IMSG_SIZE_CHECK(&imsg, &pf);
>   			memcpy(&pf, imsg.data, sizeof(pf));
> @@ -75,7 +93,7 @@ Index: proc.c
>   			    pf.pf_instance);
>   			break;
>   		default:
> -@@ -836,12 +842,12 @@ void
> +@@ -836,12 +841,12 @@ void
>   imsg_event_add(struct imsgev *iev)
>   {
>   	if (iev->handler == NULL) {
> @@ -90,7 +108,7 @@ Index: proc.c
>   		iev->events |= EV_WRITE;
>   
>   	event_del(&iev->ev);
> -@@ -941,7 +947,8 @@ proc_forward_imsg(struct privsep *ps, struct imsg *ims
> +@@ -941,7 +946,8 @@ proc_forward_imsg(struct privsep *ps, struct imsg *ims
>       enum privsep_procid id, int n)
>   {
>   	return (proc_compose_imsg(ps, id, n, imsg->hdr.type,
> @@ -100,7 +118,7 @@ Index: proc.c
>   }
>   
>   struct imsgbuf *
> -@@ -974,7 +981,7 @@ proc_flush_imsg(struct privsep *ps, enum privsep_proci
> +@@ -974,7 +980,7 @@ proc_flush_imsg(struct privsep *ps, enum privsep_proci
>   		if ((ibuf = proc_ibuf(ps, id, n)) == NULL)
>   			return (-1);
>   		do {
> diff --git a/net/telescope/patches/patch-control_c b/net/telescope/patches/patch-control_c
> new file mode 100644
> index 00000000000..ac2676a1ea4
> --- /dev/null
> +++ b/net/telescope/patches/patch-control_c
> @@ -0,0 +1,21 @@
> +Index: control.c
> +--- control.c.orig
> ++++ control.c
> +@@ -231,7 +231,7 @@ control_dispatch_imsg(int fd, int event, void *bula)
> + {
> + 	struct ctl_conn	*c;
> + 	struct imsg	 imsg;
> +-	ssize_t		 n;
> ++	int		 n;
> + 
> + 	if ((c = control_connbyfd(fd)) == NULL) {
> + 		message("%s: fd %d: not found", __func__, fd);
> +@@ -252,7 +252,7 @@ control_dispatch_imsg(int fd, int event, void *bula)
> + 	}
> + 
> + 	for (;;) {
> +-		if ((n = imsg_get(&c->iev.ibuf, &imsg)) == -1) {
> ++		if ((n = imsgbuf_get(&c->iev.ibuf, &imsg)) == -1) {
> + 			control_close(fd);
> + 			return;
> + 		}
> diff --git a/net/telescope/patches/patch-net_c b/net/telescope/patches/patch-net_c
> new file mode 100644
> index 00000000000..31c63ca3239
> --- /dev/null
> +++ b/net/telescope/patches/patch-net_c
> @@ -0,0 +1,24 @@
> +Index: net.c
> +--- net.c.orig
> ++++ net.c
> +@@ -576,8 +576,7 @@ handle_dispatch_imsg(int fd, int event, void *d)
> + 	struct imsg	 imsg;
> + 	struct req	*req;
> + 	struct get_req	 r;
> +-	ssize_t		 n;
> +-	int		 certok;
> ++	int		 certok, n;
> + 
> + 	if (event & EV_READ) {
> + 		if (imsgbuf_read(ibuf) == -1) {
> +@@ -593,8 +592,8 @@ handle_dispatch_imsg(int fd, int event, void *d)
> + 	}
> + 
> + 	for (;;) {
> +-		if ((n = imsg_get(ibuf, &imsg)) == -1)
> +-			err(1, "imsg_get");
> ++		if ((n = imsgbuf_get(ibuf, &imsg)) == -1)
> ++			err(1, "imsgbuf_get");
> + 		if (n == 0)
> + 			break;
> + 		switch (imsg_get_type(&imsg)) {
> diff --git a/net/telescope/patches/patch-telescope_c b/net/telescope/patches/patch-telescope_c
> new file mode 100644
> index 00000000000..84cda796a29
> --- /dev/null
> +++ b/net/telescope/patches/patch-telescope_c
> @@ -0,0 +1,24 @@
> +Index: telescope.c
> +--- telescope.c.orig
> ++++ telescope.c
> +@@ -453,8 +453,7 @@ handle_dispatch_imsg(int fd, int event, void *data)
> + 	struct download	*d;
> + 	const char	*h;
> + 	char		*str, *page;
> +-	ssize_t		 n;
> +-	int		 code;
> ++	int		 code, n;
> + 
> + 	if (event & EV_READ) {
> + 		if (imsgbuf_read(imsgbuf) == -1)
> +@@ -466,8 +465,8 @@ handle_dispatch_imsg(int fd, int event, void *data)
> + 	}
> + 
> + 	for (;;) {
> +-		if ((n = imsg_get(imsgbuf, &imsg)) == -1)
> +-			err(1, "imsg_get");
> ++		if ((n = imsgbuf_get(imsgbuf, &imsg)) == -1)
> ++			err(1, "imsgbuf_get");
> + 		if (n == 0)
> + 			break;
> + 
> diff --git a/net/thingsd/patches/patch-thingsctl_thingsctl_c b/net/thingsd/patches/patch-thingsctl_thingsctl_c
> index c16f1c8cc44..ce1845194e9 100644
> --- a/net/thingsd/patches/patch-thingsctl_thingsctl_c
> +++ b/net/thingsd/patches/patch-thingsctl_thingsctl_c
> @@ -27,6 +27,17 @@ Index: thingsctl/thingsctl.c
>   			errx(1, "imsg_read error");
>   		if (n == 0) {
>   			if (res->action == SHOW_PACKETS)
> +@@ -202,8 +202,8 @@ main(int argc, char *argv[])
> + 		}
> + 
> + 		while (!done) {
> +-			if ((n = imsg_get(ibuf, &imsg)) == -1)
> +-				errx(1, "imsg_get error");
> ++			if ((n = imsgbuf_get(ibuf, &imsg)) == -1)
> ++				errx(1, "imsgbuf_get error");
> + 			if (n == 0)
> + 				break;
> + 
>  @@ -226,7 +226,7 @@ main(int argc, char *argv[])
>   					done = 1;
>   					break;
> diff --git a/net/thingsd/patches/patch-thingsd_control_c b/net/thingsd/patches/patch-thingsd_control_c
> index 5b646fa1b76..f8d47201058 100644
> --- a/net/thingsd/patches/patch-thingsd_control_c
> +++ b/net/thingsd/patches/patch-thingsd_control_c
> @@ -24,7 +24,7 @@ Index: thingsd/control.c
>   	TAILQ_REMOVE(&ctl_conns, c, entry);
>   
>   	event_del(&c->iev.ev);
> -@@ -397,15 +402,15 @@ control_dispatch_imsg(int fd, short event, void *arg)
> +@@ -397,22 +402,22 @@ control_dispatch_imsg(int fd, short event, void *arg)
>   	}
>   
>   	if (event & EV_READ) {
> @@ -43,6 +43,14 @@ Index: thingsd/control.c
>   			control_close(ps, &imsg, fd, cs);
>   			return;
>   		}
> + 	}
> + 
> + 	for (;;) {
> +-		n = imsg_get(&c->iev.ibuf, &imsg);
> ++		n = imsgbuf_get(&c->iev.ibuf, &imsg);
> + 		if (n == -1) {
> + 			control_close(ps, &imsg, fd, cs);
> + 			return;
>  @@ -505,7 +510,7 @@ control_dispatch_imsg(int fd, short event, void *arg)
>   fail:
>   	imsg_compose_event(&c->iev, IMSG_CTL_FAIL,
> diff --git a/net/thingsd/patches/patch-thingsd_proc_c b/net/thingsd/patches/patch-thingsd_proc_c
> index b3a529d04df..2cd903c74ec 100644
> --- a/net/thingsd/patches/patch-thingsd_proc_c
> +++ b/net/thingsd/patches/patch-thingsd_proc_c
> @@ -33,7 +33,17 @@ Index: thingsd/proc.c
>   			close(pp->pp_pipes[dst][n]);
>   			pp->pp_pipes[dst][n] = -1;
>   		}
> -@@ -625,7 +630,7 @@ proc_dispatch(int fd, short event, void *arg)
> +@@ -616,8 +621,7 @@ proc_dispatch(int fd, short event, void *arg)
> + 	struct privsep		*ps = p->p_ps;
> + 	struct imsgbuf		*ibuf;
> + 	struct imsg		 imsg;
> +-	ssize_t			 n;
> +-	int			 verbose;
> ++	int			 n, verbose;
> + 	const char		*title;
> + 	struct privsep_fd	 pf;
> + 
> +@@ -625,7 +629,7 @@ proc_dispatch(int fd, short event, void *arg)
>   	ibuf = &iev->ibuf;
>   
>   	if (event & EV_READ) {
> @@ -42,7 +52,7 @@ Index: thingsd/proc.c
>   			fatal("%s: imsg_read", __func__);
>   		if (n == 0) {
>   			/* this pipe is dead, so remove the event handler */
> -@@ -636,13 +641,14 @@ proc_dispatch(int fd, short event, void *arg)
> +@@ -636,19 +640,20 @@ proc_dispatch(int fd, short event, void *arg)
>   	}
>   
>   	if (event & EV_WRITE) {
> @@ -63,7 +73,15 @@ Index: thingsd/proc.c
>   		}
>   	}
>   
> -@@ -679,7 +685,7 @@ proc_dispatch(int fd, short event, void *arg)
> + 	for (;;) {
> +-		if ((n = imsg_get(ibuf, &imsg)) == -1)
> +-			fatal("%s: imsg_get", __func__);
> ++		if ((n = imsgbuf_get(ibuf, &imsg)) == -1)
> ++			fatal("%s: imsgbuf_get", __func__);
> + 		if (n == 0)
> + 			break;
> + 
> +@@ -679,7 +684,7 @@ proc_dispatch(int fd, short event, void *arg)
>   		case IMSG_CTL_PROCFD:
>   			IMSG_SIZE_CHECK(&imsg, &pf);
>   			memcpy(&pf, imsg.data, sizeof(pf));
> @@ -72,7 +90,7 @@ Index: thingsd/proc.c
>   			    pf.pf_instance);
>   			break;
>   		default:
> -@@ -712,12 +718,12 @@ void
> +@@ -712,12 +717,12 @@ void
>   imsg_event_add(struct imsgev *iev)
>   {
>   	if (iev->handler == NULL) {
> @@ -87,7 +105,7 @@ Index: thingsd/proc.c
>   		iev->events |= EV_WRITE;
>   
>   	event_del(&iev->ev);
> -@@ -814,7 +820,8 @@ proc_forward_imsg(struct privsep *ps, struct imsg *ims
> +@@ -814,7 +819,8 @@ proc_forward_imsg(struct privsep *ps, struct imsg *ims
>       enum privsep_procid id, int n)
>   {
>   	return (proc_compose_imsg(ps, id, n, imsg->hdr.type,
> @@ -97,7 +115,7 @@ Index: thingsd/proc.c
>   }
>   
>   struct imsgbuf *
> -@@ -847,7 +854,7 @@ proc_flush_imsg(struct privsep *ps, enum privsep_proci
> +@@ -847,7 +853,7 @@ proc_flush_imsg(struct privsep *ps, enum privsep_proci
>   		if ((ibuf = proc_ibuf(ps, id, n)) == NULL)
>   			return (-1);
>   		do {

-- 
:wq Claudio