From 7d0e23c89ccdb5d4ba27750ae62227efe934d8b8 Mon Sep 17 00:00:00 2001 From: Yihang Wang Date: Sat, 16 Mar 2024 10:18:49 +0800 Subject: [PATCH 1/3] fix: output the missing completed state into status output file (zmap#823) --- src/monitor.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/monitor.c b/src/monitor.c index 2d0bf9559..b435b730e 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -469,7 +469,7 @@ void monitor_run(iterator_t *it, pthread_mutex_t *lock) int_status_t *internal_status = xmalloc(sizeof(int_status_t)); export_status_t *export_status = xmalloc(sizeof(export_status_t)); - while (!(zsend.complete && zrecv.complete)) { + while (1) { update_pcap_stats(lock); export_stats(internal_status, export_status, it); log_drop_warnings(export_status); @@ -487,6 +487,9 @@ void monitor_run(iterator_t *it, pthread_mutex_t *lock) if (status_fd) { update_status_updates_file(export_status, status_fd); } + if (zsend.complete && zrecv.complete) { + break; + } sleep(UPDATE_INTERVAL); } if (!zconf.quiet) { From 332ab7aaf11c3317cb95417b295652a60b4550e4 Mon Sep 17 00:00:00 2001 From: Yihang Wang Date: Sat, 16 Mar 2024 10:20:49 +0800 Subject: [PATCH 2/3] fix: add missing header file stdbool.h (#823) --- src/monitor.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/monitor.c b/src/monitor.c index b435b730e..c879f534f 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -469,7 +470,7 @@ void monitor_run(iterator_t *it, pthread_mutex_t *lock) int_status_t *internal_status = xmalloc(sizeof(int_status_t)); export_status_t *export_status = xmalloc(sizeof(export_status_t)); - while (1) { + while (true) { update_pcap_stats(lock); export_stats(internal_status, export_status, it); log_drop_warnings(export_status); From 98050dd0a832fe180fcb4292e666ee51520399a2 Mon Sep 17 00:00:00 2001 From: Yihang Wang Date: Mon, 18 Mar 2024 09:05:59 +0800 Subject: [PATCH 3/3] =?UTF-8?q?Refactor=20monitor=5Frun=20function=20and?= =?UTF-8?q?=20add=20export=5Fthen=5Fupdate=20function=20=EF=BC=88#823,=20#?= =?UTF-8?q?828)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/monitor.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/monitor.c b/src/monitor.c index c879f534f..e6c0031b7 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -465,12 +465,7 @@ void monitor_init(void) } } -void monitor_run(iterator_t *it, pthread_mutex_t *lock) -{ - int_status_t *internal_status = xmalloc(sizeof(int_status_t)); - export_status_t *export_status = xmalloc(sizeof(export_status_t)); - - while (true) { +void export_then_update(int_status_t *internal_status, iterator_t *it, export_status_t *export_status, pthread_mutex_t *lock) { update_pcap_stats(lock); export_stats(internal_status, export_status, it); log_drop_warnings(export_status); @@ -488,11 +483,21 @@ void monitor_run(iterator_t *it, pthread_mutex_t *lock) if (status_fd) { update_status_updates_file(export_status, status_fd); } - if (zsend.complete && zrecv.complete) { - break; - } +} + +void monitor_run(iterator_t *it, pthread_mutex_t *lock) +{ + int_status_t *internal_status = xmalloc(sizeof(int_status_t)); + export_status_t *export_status = xmalloc(sizeof(export_status_t)); + + // wait for the scanning process to finish + while (!(zsend.complete && zrecv.complete)) { + export_then_update(internal_status, it, export_status, lock); sleep(UPDATE_INTERVAL); } + // final update + export_then_update(internal_status, it, export_status, lock); + if (!zconf.quiet) { lock_file(stderr); fflush(stderr);