代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/gazelle 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
From 0e4e3a3357d5a2ffff06bf9a32bba95e207e8ff0 Mon Sep 17 00:00:00 2001
From: wu-changsheng <wuchangsheng2@huawei.com>
Date: Tue, 6 Sep 2022 16:23:58 +0800
Subject: [PATCH 01/21] fix fd leak
---
src/lstack/core/lstack_control_plane.c | 6 +++++-
src/ltran/ltran_monitor.c | 4 +++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/lstack/core/lstack_control_plane.c b/src/lstack/core/lstack_control_plane.c
index 8012fa6..7f62254 100644
--- a/src/lstack/core/lstack_control_plane.c
+++ b/src/lstack/core/lstack_control_plane.c
@@ -713,6 +713,7 @@ void control_server_thread(void *arg)
int32_t epfd = init_epoll(listenfd);
if (epfd < 0) {
+ posix_api->close_fn(listenfd);
LSTACK_LOG(ERR, LSTACK, "init_epoll failed\n");
return;
}
@@ -744,7 +745,9 @@ void control_server_thread(void *arg)
evt_array.data.fd = connfd;
evt_array.events = EPOLLIN;
- posix_api->epoll_ctl_fn(epfd, EPOLL_CTL_ADD, connfd, &evt_array);
+ if (posix_api->epoll_ctl_fn(epfd, EPOLL_CTL_ADD, connfd, &evt_array) < 0) {
+ posix_api->close_fn(connfd);
+ }
} else {
if (handle_stat_request(evt_array.data.fd) < 0) {
posix_api->close_fn(evt_array.data.fd);
@@ -761,6 +764,7 @@ void control_client_thread(void *arg)
epfd = init_epoll(sockfd);
if (epfd < 0) {
+ posix_api->close_fn(sockfd);
LSTACK_LOG(ERR, LSTACK, "control_thread fail\n");
return;
}
diff --git a/src/ltran/ltran_monitor.c b/src/ltran/ltran_monitor.c
index dfda93f..7da65ea 100644
--- a/src/ltran/ltran_monitor.c
+++ b/src/ltran/ltran_monitor.c
@@ -188,6 +188,7 @@ static int32_t gazelle_ctl_init(void)
ret = gazelle_ep_event_init(&event_dfx, GAZELLE_DFX_SERVER_FD, listenfd);
if (ret != GAZELLE_OK) {
+ close(listenfd);
return GAZELLE_ERR;
}
@@ -207,6 +208,7 @@ static int32_t gazelle_ctl_init(void)
ret = gazelle_ep_event_init(&event_reg, GAZELLE_REG_SERVER_FD, listenfd);
if (ret != GAZELLE_OK) {
+ close(listenfd);
sockfd_data_free(event_dfx.data.ptr);
return GAZELLE_ERR;
}
@@ -283,7 +285,6 @@ static void dfx_server_msg_proc(uint32_t events, struct sockfd_data *data)
if (ret < 0) {
LTRAN_ERR("epoll_ctl ERROR, errno: %d. ret=%d.\n", errno, ret);
sockfd_data_free(event.data.ptr);
- close(conn_fd);
return;
}
}
@@ -421,6 +422,7 @@ static void reg_server_msg_proc(uint32_t events, struct sockfd_data *data)
event.events = EPOLLIN;
if (event.data.ptr == NULL) {
LTRAN_ERR("alloc sockfd_data ERROR\n");
+ close(conn_fd);
return;
}
--
2.23.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。