From 34c272bf7f0484a1371033c187719adc72f061d5 Mon Sep 17 00:00:00 2001
From: li_yunqing <liyunqing@kylinos.cn>
Date: Tue, 27 Feb 2024 16:58:59 +0800
Subject: [PATCH] recv support MSG_DONTWAIT

---
 src/lstack/core/lstack_lwip.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/lstack/core/lstack_lwip.c b/src/lstack/core/lstack_lwip.c
index 0b339fe..7715cf3 100644
--- a/src/lstack/core/lstack_lwip.c
+++ b/src/lstack/core/lstack_lwip.c
@@ -993,6 +993,7 @@ ssize_t do_lwip_read_from_stack(int32_t fd, void *buf, size_t len, int32_t flags
 {
     ssize_t recvd = 0;
     struct lwip_sock *sock = get_socket_by_fd(fd);
+    bool noblock = (flags & MSG_DONTWAIT) || netconn_is_nonblocking(sock->conn);
 
     if (recv_break_for_err(sock)) {
         return -1;
@@ -1005,9 +1006,9 @@ ssize_t do_lwip_read_from_stack(int32_t fd, void *buf, size_t len, int32_t flags
     }
 
     if (NETCONN_IS_UDP(sock)) {
-        recvd = recv_ring_udp_read(sock, buf, len, netconn_is_nonblocking(sock->conn), addr, addrlen);
+        recvd = recv_ring_udp_read(sock, buf, len, noblock, addr, addrlen);
     } else {
-        recvd = recv_ring_tcp_read(sock, buf, len, netconn_is_nonblocking(sock->conn));
+        recvd = recv_ring_tcp_read(sock, buf, len, noblock);
     }
 
     /* rte_ring_count reduce lock */
-- 
2.27.0

