59 lines
1.7 KiB
Diff
59 lines
1.7 KiB
Diff
From 670f888704c7bbb1121e63bc380ca34b83c43464 Mon Sep 17 00:00:00 2001
|
|
From: jiangheng <jiangheng12@huawei.com>
|
|
Date: Thu, 3 Mar 2022 17:06:03 +0800
|
|
Subject: [PATCH] support REUSEPOR option fix rpc msg too much
|
|
fix recurring events
|
|
|
|
---
|
|
src/api/sockets.c | 4 ++++
|
|
src/include/lwipsock.h | 10 ++++++++--
|
|
2 files changed, 12 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/api/sockets.c b/src/api/sockets.c
|
|
index b032ce9..4b682f3 100644
|
|
--- a/src/api/sockets.c
|
|
+++ b/src/api/sockets.c
|
|
@@ -3029,6 +3029,10 @@ lwip_sockopt_to_ipopt(int optname)
|
|
return SOF_KEEPALIVE;
|
|
case SO_REUSEADDR:
|
|
return SOF_REUSEADDR;
|
|
+#if USE_LIBOS
|
|
+ case SO_REUSEPORT:
|
|
+ return SO_REUSEPORT;
|
|
+#endif
|
|
default:
|
|
LWIP_ASSERT("Unknown socket option", 0);
|
|
return 0;
|
|
diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h
|
|
index 069cdcb..e2519ff 100644
|
|
--- a/src/include/lwipsock.h
|
|
+++ b/src/include/lwipsock.h
|
|
@@ -94,7 +94,8 @@ struct lwip_sock {
|
|
#if USE_LIBOS
|
|
uint32_t epoll_events; /* registered events */
|
|
uint32_t events; /* available events */
|
|
- int32_t in_event; /* avoid recurring events */
|
|
+ volatile bool have_event; /* avoid recurring events */
|
|
+ volatile bool have_rpc_send; /* avoid recurring rpc_send */
|
|
epoll_data_t ep_data;
|
|
struct weakup_poll *weakup;
|
|
struct protocol_stack *stack;
|
|
@@ -103,8 +104,13 @@ struct lwip_sock {
|
|
struct pbuf *send_lastdata; /* unread data in one pbuf */
|
|
void *send_ring;
|
|
int32_t recv_flags;
|
|
- int32_t nextfd; /* listenfd list */
|
|
+ bool wait_close;
|
|
+ int32_t attach_fd;
|
|
+ struct lwip_sock *shadowed_sock;
|
|
+ struct list_node attach_list;
|
|
+ struct list_node listen_list;
|
|
struct list_node recv_list;
|
|
+ int32_t nextfd; /* listenfd list */
|
|
#endif
|
|
};
|
|
|
|
--
|
|
1.8.3.1
|
|
|