diff options
| author | lijia <[email protected]> | 2021-10-12 10:41:53 +0800 |
|---|---|---|
| committer | lijia <[email protected]> | 2021-10-12 10:41:53 +0800 |
| commit | 4bf8b344cb5487055eb9ab653d896f797a4210f5 (patch) | |
| tree | 14f0a0497f56fbaa1d9ae79744079e54ed798767 | |
| parent | a493433f9126b9e9173e6a571fc7d921bd3bd516 (diff) | |
修复dumpfile-list退出时没有正确释放所有资源, 而直接调用exit的问题;v4.2.57
修复project ip_frag_list 功能开关解析错误问题;
| -rw-r--r-- | src/packet_io/packet_io_pcap.c | 49 | ||||
| -rw-r--r-- | src/project/project_requirement.c | 4 |
2 files changed, 31 insertions, 22 deletions
diff --git a/src/packet_io/packet_io_pcap.c b/src/packet_io/packet_io_pcap.c index d2dcfad..e42c24e 100644 --- a/src/packet_io/packet_io_pcap.c +++ b/src/packet_io/packet_io_pcap.c @@ -1394,11 +1394,6 @@ static void *pcap_io_thread(void *arg) #endif
#endif
- if(sapp_get_cla_raw("dumpfile-list", &no_use) >= 0){
- pcap_io_dumpfile_list();
- exit(0);
- }
-
if(0 == (DIR_ROUTE_DOWN & route_dir)){
handle = pcap_up_handle;
stop_flag = &g_pcap_io_stop_flag_up;
@@ -1407,6 +1402,11 @@ static void *pcap_io_thread(void *arg) stop_flag = &g_pcap_io_stop_flag_down;
}
+ if(sapp_get_cla_raw("dumpfile-list", &no_use) >= 0){
+ pcap_io_dumpfile_list();
+ goto thread_exit;
+ }
+
while(sapp_get_current_state() < SAPP_STATE_PROCESSING){
sapp_usleep(1000);
}
@@ -1434,13 +1434,14 @@ static void *pcap_io_thread(void *arg) }
}
+thread_exit:
*stop_flag = 1;
sapp_usleep(10000);
if(g_pcap_exit_cb_fun){
(*g_pcap_exit_cb_fun)();
}
if(exit_prog_flag){
- exit(1);
+ exit(0);
}
return NULL;
@@ -1585,14 +1586,17 @@ void pcap_dl_io_run(void) void pcap_dl_io_stop(void)
{
- if(g_pcap_io_pid_up != 0){
- pcap_breakloop(pcap_up_handle);
- pthread_join(g_pcap_io_pid_up, NULL);
- }
-
- if(g_pcap_io_pid_down){
- pcap_breakloop(pcap_down_handle);
- pthread_join(g_pcap_io_pid_down, NULL);
+ char *no_use;
+ if(sapp_get_cla_raw("dumpfile-list", &no_use) < 0){
+ if(pcap_up_handle){
+ pcap_breakloop(pcap_up_handle);
+ pthread_join(g_pcap_io_pid_up, NULL);
+ }
+
+ if(pcap_down_handle){
+ pcap_breakloop(pcap_down_handle);
+ pthread_join(g_pcap_io_pid_down, NULL);
+ }
}
}
@@ -1600,15 +1604,18 @@ void pcap_dl_io_stop(void) void pcap_dl_io_destroy(void)
{
int i;
+ char *no_use;
- if(pcap_up_handle){
- pcap_close(pcap_up_handle);
- pcap_up_handle = NULL;
+ if(sapp_get_cla_raw("dumpfile-list", &no_use) < 0){
+ if(pcap_up_handle){
+ pcap_close(pcap_up_handle);
+ pcap_up_handle = NULL;
+ }
+ if(pcap_down_handle){
+ pcap_close(pcap_down_handle);
+ pcap_down_handle = NULL;
+ }
}
- if(pcap_down_handle){
- pcap_close(pcap_down_handle);
- pcap_down_handle = NULL;
- }
for(i = 0; i < g_pcap_work_thread_num; i++){
while(MESA_lqueue_get_count(work_thread_pool[i].pkt_queue)){
diff --git a/src/project/project_requirement.c b/src/project/project_requirement.c index 9661702..ede1a7b 100644 --- a/src/project/project_requirement.c +++ b/src/project/project_requirement.c @@ -240,6 +240,7 @@ static int project_req_conf_is_exist(const char *check_name) FILE *fp;
char *preq_name;
int line_num = 0;
+ int section_is_exist = 0;
fp = fopen(ABBR_PROJECT_LIST_CONF_FILE, "r");
if(NULL == fp){
@@ -261,6 +262,7 @@ static int project_req_conf_is_exist(const char *check_name) }
if(strncasecmp(preq_name, check_name, strlen(preq_name)) == 0){
+ section_is_exist = 1;
goto fun_exit;
}
@@ -271,7 +273,7 @@ static int project_req_conf_is_exist(const char *check_name) fun_exit:
fclose(fp);
- return 0;
+ return section_is_exist;
}
|
