From 55e080232602529ed6fcc8a12decaca95ec61baa Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 19 Nov 2023 15:39:59 +0100 Subject: [PATCH] fix infinite loop on client poll Signed-off-by: Felix Fietkau --- client.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client.c b/client.c index 1fc90d8..11d1c52 100644 --- a/client.c +++ b/client.c @@ -224,12 +224,12 @@ static void client_fd_cb(struct uloop_fd *fd, unsigned int events) pfd = (int *)CMSG_DATA(cmsg); msg.msg_controllen = cmsg->cmsg_len; +retry: if (fd->eof) { client_free(cl); return; } -retry: iov.iov_base = &cl->rx_buf; iov.iov_len = min_sz; if (!cl->rx_ofs) { @@ -239,6 +239,8 @@ retry: len = recvmsg(fd->fd, &msg, 0); if (len < 0) return; + if (!len) + fd->eof = true; cl->rx_ofs = len; cl->rx_fd = *pfd; -- 2.30.2