From a258b0897b0560cdf123c79687e84141af9d3ff5 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 5 Sep 2017 22:53:49 +0100 Subject: [PATCH] [downloader] Allow underlying downloads to provide detailed job progress Signed-off-by: Michael Brown --- src/core/downloader.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/core/downloader.c b/src/core/downloader.c index 35b5b0ac..33737bfa 100644 --- a/src/core/downloader.c +++ b/src/core/downloader.c @@ -111,13 +111,20 @@ static void downloader_finished ( struct downloader *downloader, int rc ) { */ static int downloader_progress ( struct downloader *downloader, struct job_progress *progress ) { + int rc; + + /* Allow data transfer to provide an accurate description */ + if ( ( rc = job_progress ( &downloader->xfer, progress ) ) != 0 ) + return rc; /* This is not entirely accurate, since downloaded data may * arrive out of order (e.g. with multicast protocols), but * it's a reasonable first approximation. */ - progress->completed = downloader->buffer.pos; - progress->total = downloader->buffer.len; + if ( ! progress->total ) { + progress->completed = downloader->buffer.pos; + progress->total = downloader->buffer.len; + } return 0; }