This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 7d054892a7541c88ceef590d0c506a04998e4529 Author: Yongrong Wang <[email protected]> AuthorDate: Mon Oct 20 19:32:02 2025 +0800 vsock: fix vsock poll recv data can not close error vsock poll need set POLLIN when conn set SHUT_RD vsock recv need return when conn set SHUT_RD before return EAGAIN Signed-off-by: Yongrong Wang <[email protected]> --- net/vsock/vsock_sockif.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/net/vsock/vsock_sockif.c b/net/vsock/vsock_sockif.c index 87d611ea61a..53e7f2309f3 100644 --- a/net/vsock/vsock_sockif.c +++ b/net/vsock/vsock_sockif.c @@ -53,8 +53,8 @@ #define VSOCK_NOTIFY_SEND 3 #define VSOCK_NOTIFY_SHUTDOWN 4 -#define VSOCK_IS_SHUTDOWN_RD(s) ((s) == SHUT_RD) -#define VSOCK_IS_SHUTDOWN_WR(s) ((s) == SHUT_WR) +#define VSOCK_IS_SHUTDOWN_RD(s) ((s) & SHUT_RD) +#define VSOCK_IS_SHUTDOWN_WR(s) ((s) & SHUT_WR) #define VSOCK_IS_SHUTDOWN(s) ((s) == SHUT_RDWR) #define VSOCK_LAST_RESERVED_PORT 1024 @@ -2080,6 +2080,10 @@ static ssize_t vsock_recvmsg(FAR struct socket *psock, { vsock_update_rx_credit(conn, ret); } + else if (VSOCK_IS_SHUTDOWN_RD(conn->shutdown)) + { + ret = 0; + } else if (_SS_ISNONBLOCK(conn->sconn.s_flags) || (flags & MSG_DONTWAIT) != 0) { @@ -2087,12 +2091,6 @@ static ssize_t vsock_recvmsg(FAR struct socket *psock, } else /* ret == 0 */ { - if (conn->shutdown & SHUT_RD) - { - vsock_rx_unlock(conn); - return 0; - } - /* No data recv, setup the user msg and wait */ DEBUGASSERT(ret == 0);
