44 lines
1.3 KiB
Diff
44 lines
1.3 KiB
Diff
From e09613994ea3fee2c5468c48d24d8a6dfb96f8b4 Mon Sep 17 00:00:00 2001
|
|
From: hankangkang <hankangkang5@huawei.com>
|
|
Date: Mon, 18 Nov 2024 09:18:42 +0800
|
|
Subject: [PATCH] openGauss: support kernel accept4
|
|
|
|
---
|
|
src/lstack/api/lstack_wrap.c | 16 ++++++++++++----
|
|
1 file changed, 12 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/src/lstack/api/lstack_wrap.c b/src/lstack/api/lstack_wrap.c
|
|
index 7d32ef1..7e724cd 100644
|
|
--- a/src/lstack/api/lstack_wrap.c
|
|
+++ b/src/lstack/api/lstack_wrap.c
|
|
@@ -131,14 +131,22 @@ static int32_t do_accept4(int32_t s, struct sockaddr *addr, socklen_t *addrlen,
|
|
return posix_api->accept4_fn(s, addr, addrlen, flags);
|
|
}
|
|
|
|
- int32_t fd = g_wrap_api->accept4_fn(s, addr, addrlen, flags);
|
|
+ int fd = 0;
|
|
+ struct lwip_sock *sock = lwip_get_socket(s);
|
|
+ if (POSIX_HAS_TYPE(sock, POSIX_KERNEL)) {
|
|
+ fd = posix_api->accept4_fn(s, addr, addrlen, flags);
|
|
+ if (fd >= 0) {
|
|
+ return fd;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ fd = g_wrap_api->accept4_fn(s, addr, addrlen, flags);
|
|
if (fd >= 0) {
|
|
- struct lwip_sock *sock = lwip_get_socket(fd);
|
|
+ sock = lwip_get_socket(fd);
|
|
POSIX_SET_TYPE(sock, POSIX_LWIP);
|
|
- return fd;
|
|
}
|
|
|
|
- return posix_api->accept4_fn(s, addr, addrlen, flags);
|
|
+ return fd;
|
|
}
|
|
|
|
static inline int sock_set_nonblocking(int fd)
|
|
--
|
|
2.33.0
|
|
|