This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 7a4a6ce4ce11c5d8de3025f83fe496d4c14e9341 Author: daichuan <[email protected]> AuthorDate: Tue Aug 26 19:44:29 2025 +0800 usrsock: Avoid frequent POLLIN when remote close during accept. Clear USRSOCK_EVENT_RECVFROM_AVAIL flag when remote closes connection during accept to prevent repeated POLLIN events and EPIPE loop. Signed-off-by: daichuan <[email protected]> --- net/usrsock/usrsock_accept.c | 1 + net/usrsock/usrsock_poll.c | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/net/usrsock/usrsock_accept.c b/net/usrsock/usrsock_accept.c index 880be40edbc..75057eda6da 100644 --- a/net/usrsock/usrsock_accept.c +++ b/net/usrsock/usrsock_accept.c @@ -297,6 +297,7 @@ int usrsock_accept(FAR struct socket *psock, FAR struct sockaddr *addr, { ninfo("usockid=%d; remote closed (EOF).\n", conn->usockid); + conn->flags &= ~USRSOCK_EVENT_RECVFROM_AVAIL; ret = -EPIPE; goto errout_free_conn; } diff --git a/net/usrsock/usrsock_poll.c b/net/usrsock/usrsock_poll.c index 8ee80097340..9c074d7e3d1 100644 --- a/net/usrsock/usrsock_poll.c +++ b/net/usrsock/usrsock_poll.c @@ -83,7 +83,13 @@ static uint32_t poll_event(FAR struct net_driver_s *dev, /* Remote closed. */ - eventset |= (POLLHUP | POLLIN); + eventset |= POLLHUP; + if (flags & USRSOCK_EVENT_RECVFROM_AVAIL) + { + ninfo("socket recv avail.\n"); + + eventset |= POLLIN; + } } else {
