• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1From 670f888704c7bbb1121e63bc380ca34b83c43464 Mon Sep 17 00:00:00 2001
2From: jiangheng <jiangheng12@huawei.com>
3Date: Thu, 3 Mar 2022 17:06:03 +0800
4Subject: [PATCH] support REUSEPOR option fix rpc msg too much
5 fix recurring events
6
7---
8 src/api/sockets.c      |  4 ++++
9 src/include/lwipsock.h | 10 ++++++++--
10 2 files changed, 12 insertions(+), 2 deletions(-)
11
12diff --git a/src/api/sockets.c b/src/api/sockets.c
13index b032ce9..4b682f3 100644
14--- a/src/api/sockets.c
15+++ b/src/api/sockets.c
16@@ -3029,6 +3029,10 @@ lwip_sockopt_to_ipopt(int optname)
17     return SOF_KEEPALIVE;
18   case SO_REUSEADDR:
19     return SOF_REUSEADDR;
20+#if USE_LIBOS
21+  case SO_REUSEPORT:
22+    return SO_REUSEPORT;
23+#endif
24   default:
25     LWIP_ASSERT("Unknown socket option", 0);
26     return 0;
27diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h
28index 069cdcb..e2519ff 100644
29--- a/src/include/lwipsock.h
30+++ b/src/include/lwipsock.h
31@@ -94,7 +94,8 @@ struct lwip_sock {
32 #if USE_LIBOS
33   uint32_t epoll_events; /* registered events */
34   uint32_t events; /* available events */
35-  int32_t in_event; /* avoid recurring events */
36+  volatile bool have_event; /* avoid recurring events */
37+  volatile bool have_rpc_send; /* avoid recurring rpc_send */
38   epoll_data_t ep_data;
39   struct weakup_poll *weakup;
40   struct protocol_stack *stack;
41@@ -103,8 +104,13 @@ struct lwip_sock {
42   struct pbuf *send_lastdata; /* unread data in one pbuf */
43   void *send_ring;
44   int32_t recv_flags;
45-  int32_t nextfd; /* listenfd list */
46+  bool wait_close;
47+  int32_t attach_fd;
48+  struct lwip_sock *shadowed_sock;
49+  struct list_node attach_list;
50+  struct list_node listen_list;
51   struct list_node recv_list;
52+  int32_t nextfd; /* listenfd list */
53 #endif
54 };
55
56--
571.8.3.1
58
59