summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/downloader.c11
1 files 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;
}