37 lines
1.3 KiB
Diff
37 lines
1.3 KiB
Diff
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
|
|
|