gazelle/0141-recv-support-MSG_DONTWAIT.patch
jiangheng 4f41c856dc sync fix rpc_pool create failed coredump
(cherry picked from commit 02e9e68a47db8e0c47ddb8756a2199aa0b769bb9)
2024-03-15 10:46:33 +08:00

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