From 032a456c837ecb486078e05cf280b2f01f2509e3 Mon Sep 17 00:00:00 2001 From: wangyingdong Date: Tue, 1 Aug 2023 19:40:28 +0800 Subject: [PATCH] net/local:Add support for MSG_DONTWAIT to SOCK_STREAM Signed-off-by: wangyingdong --- net/local/local_recvmsg.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/net/local/local_recvmsg.c b/net/local/local_recvmsg.c index c8b318361d5..a5e77ae5e10 100644 --- a/net/local/local_recvmsg.c +++ b/net/local/local_recvmsg.c @@ -224,6 +224,25 @@ psock_stream_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len, return -ENOTCONN; } + /* If it is non-blocking mode, the data in fifo is 0 and + * returns directly + */ + + if (flags & MSG_DONTWAIT) + { + int data_len = 0; + ret = file_ioctl(&conn->lc_infile, FIONREAD, &data_len); + if (ret < 0) + { + return ret; + } + + if (data_len == 0) + { + return -EAGAIN; + } + } + /* Read the packet */ ret = psock_fifo_read(psock, buf, &readlen, true);