From 4d4166ed4ea6944bb6f74cbe061388d086fc11a2 Mon Sep 17 00:00:00 2001 From: Yihang Wang <16917636+WangYihang@users.noreply.github.com> Date: Tue, 19 Mar 2024 06:24:59 +0800 Subject: [PATCH] Output the progress once more when the whole scan process finished (#828) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: output the missing completed state into status output file (zmap#823) * fix: add missing header file stdbool.h (#823) * Refactor monitor_run function and add export_then_update function (#823, #828) --- src/monitor.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/monitor.c b/src/monitor.c index 2d0bf9559..e6c0031b7 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -464,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 (!(zsend.complete && zrecv.complete)) { +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); @@ -487,8 +483,21 @@ void monitor_run(iterator_t *it, pthread_mutex_t *lock) if (status_fd) { update_status_updates_file(export_status, status_fd); } +} + +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);