From: Felix Fietkau Date: Sun, 19 Nov 2023 14:39:59 +0000 (+0100) Subject: fix infinite loop on client poll X-Git-Url: http://git.openwrt.org/openwrt/openwrt.git;lede-17.01?a=commitdiff_plain;h=55e080232602529ed6fcc8a12decaca95ec61baa;p=project%2Fudebug.git fix infinite loop on client poll Signed-off-by: Felix Fietkau --- 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;