From: Michael Brown Date: Tue, 5 Sep 2017 21:53:49 +0000 (+0100) Subject: [downloader] Allow underlying downloads to provide detailed job progress X-Git-Tag: v1.20.1~158 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a258b0897b0560cdf123c79687e84141af9d3ff5;p=thirdparty%2Fipxe.git [downloader] Allow underlying downloads to provide detailed job progress Signed-off-by: Michael Brown --- diff --git a/src/core/downloader.c b/src/core/downloader.c index 35b5b0ac6..33737bfac 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; }