From 62c193bd4e464ec9d847b8abff21e10dfc7b511e Mon Sep 17 00:00:00 2001 From: Mole Shang <135e2@135e2.dev> Date: Sat, 2 Mar 2024 12:53:05 +0800 Subject: process_url: do not update curl status during callback ... and in turn fixes the race condition --- src/process_url.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/process_url.c b/src/process_url.c index a8dadc9..c1d8d38 100644 --- a/src/process_url.c +++ b/src/process_url.c @@ -528,8 +528,10 @@ void poll_status(status_t *stat) { for (unsigned char i = 0; i < curl_conf->total_thrd; i++) { curl_conf->dlnow += curl_conf->dlnow_per_thrd[i]; } - stat->cur = (unsigned long long)curl_conf->dlnow; - stat->total = (unsigned long long)curl_conf->dltotal; + if (stat->type == SIZE_BYTES) { + stat->cur = (unsigned long long)curl_conf->dlnow; + stat->total = (unsigned long long)curl_conf->dltotal; + } DEBUG_PRINT("success_thrd: %hhu, total_thrd: %hhu, is_done: %s\n", curl_conf->success_thrd, curl_conf->total_thrd, stat->is_done ? "yes" : "no"); -- cgit v1.2.3