diff --git a/net/usrsock/usrsock_accept.c b/net/usrsock/usrsock_accept.c index 880be40edbcc1..75057eda6da28 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 8ee8009734000..e8c2c697a5d8a 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 { @@ -217,7 +223,13 @@ static int usrsock_pollsetup(FAR struct socket *psock, /* Remote closed. */ - eventset |= (POLLHUP | POLLIN); + eventset |= POLLHUP; + if (conn->flags & USRSOCK_EVENT_RECVFROM_AVAIL) + { + ninfo("socket recv avail.\n"); + + eventset |= POLLIN; + } } else {